# How do I attribute LemonSqueezy or Paddle sales to a traffic source?

Carry the DataFast visitor ID through checkout and report the sale server-side. For LemonSqueezy, add data-datafast-checkout to the checkout link and point a webhook at your DataFast site URL; signed payments are recorded and deduplicated by order. For Paddle, pass window.datafast.checkoutData as customData and call the revenue API from your webhook.

## Steps

1. **Install the script.** Add <script defer src="https://datafast.app/js/script.js" data-website-id="YOUR_SITE_ID"></script> to your site.
2. **LemonSqueezy.** Mark checkout links with data-datafast-checkout. In LemonSqueezy create a webhook for order_created and subscription_payment_success pointing at the URL shown in your site's settings, and use the revenue API key as the signing secret.
3. **Paddle.** Pass window.datafast.checkoutData as the checkout's customData in Paddle.js, then call POST /api/revenue from your Paddle webhook handler with the visitor ID.
4. **Check the dashboard.** Revenue appears per source and campaign. Retries are deduplicated by order or payment ID.

## Limits

- The native webhook exists for LemonSqueezy only; other providers use the revenue API.
- The revenue API key is a write key: keep it on your server, never in the browser.

## FAQ

**Is the LemonSqueezy webhook native?**
Yes. DataFast exposes a webhook URL per site for order_created and subscription_payment_success.

**Can I use another payment provider?**
Any provider that can call an HTTP endpoint after a successful payment can report to the revenue API.

Canonical page: https://datafast.app/solutions/track-lemonsqueezy-and-paddle-revenue-by-source
