Connected platform guide
Connect Lemon Squeezy to Drawspan
Use order and subscription webhooks to issue one-time licences, start subscriptions, renew paid terms, and revoke refunded access.
Before you start
- A Lemon Squeezy store with Test mode available.
- A published test product and variant.
- A Drawspan product with a reusable licence plan.
- A signing secret between 6 and 40 characters. Drawspan can generate one in the connection workspace.
- In Connected platforms, choose Connect platform, then Lemon Squeezy.
- Give the connection a name your team will recognise. Keep its workspace open.
- Expand step 1 and copy the webhook URL. Paste that URL into the provider dashboard below.
- Save the provider secret in the matching Drawspan endpoint. For Lemon Squeezy, generate it in Drawspan first. Gumroad has no signing secret.
- Expand step 2, link the product, then follow the testing instructions before enabling live sales.
Read the shared testing, expiry, email and recovery rules. Drawspan grants access to customers and seats; it does not email separate licence keys or issue ownerless licences.
Configure the webhook
Open Settings → Webhooks → +.
Create the test webhook while Lemon Squeezy is in Test mode. Switch to Live mode and create a separate live webhook when the integration is ready.
| Field | Value |
|---|---|
| Callback URL | The Drawspan webhook URL (the same URL for Test and Live) |
| Signing secret | The secret generated or entered in the matching Drawspan endpoint |
| Events | Select the six events below |
Select events
Select or create the events in the order shown below. The names follow the provider’s event picker.
order_createdIssue access for a one-time order. A subscription order is deduplicated against subscription_created.order_refundedRevoke access only for a fully refunded order. Partial refunds leave access unchanged.subscription_createdIssue the first subscription term.subscription_payment_successRenew the subscription term after a successful recurring payment.subscription_payment_recoveredRenew after a previously failed renewal payment is recovered.subscription_payment_refundedRevoke the linked licence only for a fully refunded subscription payment.
Link products
Drawspan matches this provider by Variant ID: The numeric ID shown on the product variant.
- Open Store → Products in Lemon Squeezy and use the variant’s menu → Copy ID. The default variant also has a numeric ID.
- Use the numeric Variant ID, not a UUID copied from a checkout link.
- In Drawspan, paste the Test or Live Variant ID and choose the licence plan it should issue.
- Create the live mapping separately. Test and live variants have different IDs.
- Order notifications identify only first_order_item. Use a separate checkout for each licensed product; later cart items are not fulfilled by this connection.
Test the connection
- Keep Lemon Squeezy in Test mode and open the published test product through Preview or its Share link.
- Pay with 4242 4242 4242 4242 and the test card details shown by Lemon Squeezy.
- In Drawspan, refresh the connection and inspect Recent webhooks.
- Confirm that Drawspan shows the mapped Variant ID and marks the test purchase as verified. Test data does not grant production access. A simulated event checks the endpoint, not the complete checkout and mapping path.
Inspect the event’s outcome, then check the customer, product, seats and expiry separately. A verified sandbox mapping does not prove production issuance or email delivery. For a local development rehearsal with test processing enabled, also verify the licence and captured email, then refund the test purchase. For subscriptions, exercise renewal, cancellation and a renewal refund. See the verification checklist.
Purchases, renewals, refunds, and cancellations
| Change | What Drawspan does |
|---|---|
| Initial one-time payment | order_created issues access. |
| Initial subscription payment | subscription_created issues the first term and prevents the related order event from issuing twice. |
| Renewal | Successful or recovered renewal payments use the payment timestamp plus the mapped duration. Initial and update invoices do not renew twice. |
| Cancellation | Cancellation stops future renewals. Access ends at the expiry already recorded in Drawspan. |
| Expiry | subscription_expired does not revoke paid access early. The recorded term expires naturally. |
| Refund | order_refunded or subscription_payment_refunded revokes the related licence only after a full refund. Partial refunds are recorded without changing access. |
Limits and recovery
- Open the webhook delivery in Lemon Squeezy and resend it after correcting the secret or product mapping.
- If the signing secret changes, save the new value in Drawspan before sending another event.
- Create the live webhook and product mapping from Live mode. Test-mode products, variants, webhooks, and orders are separate.
After correcting an accepted event, open Recent webhooks in its connection and choose Retry processing. Signature-rejected events cannot be retried inside Drawspan; resend them from the provider after fixing the secret. A missed event that was never accepted still requires a provider resend or manual correction. Recovery details.
Troubleshooting
- Lemon Squeezy refuses the secret
- Use a value between 6 and 40 characters. Generate a new secret in Drawspan if the existing one is longer.
- The webhook is accepted but no licence appears
- Check the Variant ID mapping and the customer email on the order.
- A canceled subscription still has access
- Check the recorded expiry. Cancellation does not remove a term that the customer already paid for.
- The test checkout never reaches Drawspan
- Confirm that both the product and webhook were created while Test mode was active.