5 min read
Paddle Custom Data: Keep Campaign Context Through Subscription Renewals
That connection often breaks at checkout. A visitor arrives with campaign context, opens Paddle Checkout, and becomes a transaction or subscription. If the original context is not attached before checkout, later renewals have no reliable link to the source that started the relationship.
· Grometrics Team
Paddle can tell you that a transaction happened. Your analytics should also tell you which campaign brought the customer who paid.
That connection often breaks at checkout. A visitor arrives with campaign context, opens Paddle Checkout, and becomes a transaction or subscription. If the original context is not attached before checkout, later renewals have no reliable link to the source that started the relationship.
Paddle custom data provides a practical bridge. The important part is choosing a durable identifier, attaching it at the right time, and treating webhook records as the source of truth for revenue.
What Paddle custom data does
Paddle lets you attach custom data to a transaction. When that transaction creates a subscription, Paddle copies the custom data to the subscription. It then copies the subscription custom data to later transactions, including renewals, upgrades, downgrades, and related charges.
That behavior makes custom data useful for attribution. A small identifier added to the first checkout can remain available when revenue arrives months later.
The identifier should point to an attribution record in your own system. It should not contain sensitive customer information or a large snapshot of every browser value.
Capture the source before checkout
Record the visitor context when the visitor first arrives. Useful fields include:
- Source and medium.
- Campaign name and identifier.
- Referring page.
- Landing page.
- First visit time.
Store that information under an internal attribution identifier. When the visitor opens Paddle Checkout, pass the identifier as custom data.
Paddle.Checkout.open({
items: [{ priceId: "pri_01example", quantity: 1 }],
customData: {
attribution_id: "attr_01JEXAMPLE"
}
});Paddle also supports custom data when you create a transaction through its API. That is useful when your server creates the transaction before the browser opens checkout.
Keep the structure flat and concise. Paddle warns that deeply nested custom data can be difficult to inspect in the dashboard.
Join every revenue event to the same acquisition record
The initial transaction is only the first event in a subscription journey. A useful revenue report also handles:
- The first successful payment.
- Trial conversion.
- Renewal payments.
- Plan changes.
- Refunds and adjustments.
- Cancellation and churn.
When a Paddle webhook arrives, read the attribution identifier from the event data and join the transaction to the stored visitor context. If a renewal inherits the subscription custom data, it should resolve to the same original acquisition record.
This gives you a consistent view of revenue by source without depending on the browser at renewal time. The customer may return on another device or never visit the site again. The subscription record still carries the link.
Do not turn custom data into a second analytics database
Custom data should carry the smallest stable reference that completes the join. Sending every campaign value into Paddle creates several problems:
- Old values become harder to correct.
- Nested data becomes harder to inspect.
- Sensitive data may reach systems that do not need it.
- Reporting logic becomes split between Paddle and your analytics store.
An opaque attribution identifier avoids those problems. Your analytics system keeps the full source history. Paddle carries the reference needed to find it.
Verify the complete subscription path
Test more than the first purchase. Use Paddle sandbox data to confirm this sequence:
- A visitor receives an attribution identifier.
- Checkout receives the identifier as custom data.
- The completed transaction contains the identifier.
- The subscription contains the copied custom data.
- A later subscription transaction resolves to the original source.
- A refund reduces the attributed revenue for that source.
The last check matters. Gross sales can make a campaign look profitable even when it produces a high refund rate.
What to measure after the connection works
Once Paddle revenue and acquisition context share a stable identifier, you can compare:
- Initial revenue by campaign.
- Renewal revenue by source.
- Refund rate by landing page.
- Customer value by channel.
- Paid acquisition cost against net revenue.
Grometrics Paddle analytics connects payment events to acquisition context so you can evaluate sources using actual revenue, not checkout starts alone.
Sources
CONNECT YOUR PAYMENTS
Grometrics works with Stripe, RevenueCat, Gumroad, Shopify, and more. 5-minute setup.
Connect payments →See the full page:
Paddle analyticsRELATED POSTS