Paddle + Transactional

Automate transactional emails for Paddle subscription events. Send payment receipts, subscription confirmations, renewal reminders, and cancellation confirmations. Handle the full subscription lifecycle with branded, reliable email delivery.

Transactional
Pa

OVERVIEW

Automate transactional emails for Paddle subscription events. Send payment receipts, subscription confirmations, renewal reminders, and cancellation confirmations. Handle the full subscription lifecycle with branded, reliable email delivery.

HOW IT WORKS

Integration Workflow

A step-by-step look at how data flows between your tools and Transactional.

1

Subscription Event

A customer subscribes, renews, upgrades, or cancels in Paddle.

2

Paddle Webhook

Paddle sends the event payload to your webhook endpoint.

3

Email Triggered

Your handler sends a branded email via the Transactional API.

4

Customer Notified

The customer receives a professional email with full transaction details.

KEY FEATURES

What You Get

Everything you need to integrate Paddle with Transactional.

Subscription Lifecycle

Handle every subscription event: created, renewed, paused, resumed, and cancelled with dedicated email templates.

Payment Receipts

Send detailed payment receipts with line items, tax breakdown, and Paddle receipt URLs.

Dunning Emails

Send payment failure notifications with update-payment links before Paddle retries the charge.

Trial Reminders

Notify customers before their trial ends. Include plan details and what happens next.

QUICK START

Get Started in Minutes

Here is a code example showing how to connect Paddle with Transactional.

Paddle Integration
typescript
// Paddle Webhook Handler
import Transactional from "@transactional/sdk";

const client = new Transactional({ apiKey: "txl_your_api_key" });

app.post("/webhooks/paddle", async (req, res) => {
  const event = req.body;

  switch (event.event_type) {
    case "subscription.created": {
      await client.email.send({
        from: "billing@yourapp.com",
        to: event.data.customer.email,
        subject: "Welcome to Pro!",
        tag: "paddle-subscription-created",
        templateId: "tmpl_subscription_welcome",
        templateData: {
          planName: event.data.items[0].price.description,
          amount: event.data.items[0].price.unit_price.amount,
          currency: event.data.currency_code,
          nextBilling: event.data.next_billed_at,
        },
      });
      break;
    }
    case "subscription.canceled": {
      await client.email.send({
        from: "billing@yourapp.com",
        to: event.data.customer.email,
        subject: "Subscription Cancelled",
        tag: "paddle-subscription-cancelled",
        templateId: "tmpl_subscription_cancelled",
        templateData: {
          endsAt: event.data.scheduled_change?.effective_at,
        },
      });
      break;
    }
  }

  res.status(200).send("OK");
});

YOUR AGENTS DESERVE
REAL INFRASTRUCTURE.

START BUILDING AGENTS THAT DO REAL WORK.

Deploy Your First Agent