Payment providers
Connect Dodo Payments
Set up Dodo Payments tracking, pass the click ID and verify a credited purchase.
This guide connects your customer checkout to Slice. It is separate from the payment method you add in Billing and the bank details publishers add in Payouts.
This provider connection is in beta. Complete a purchase and refund test before relying on it for a live program.
1. Before you start
- Create your business, product and campaign in Slice. An owner or admin can change payment integrations.
- Open Payment providers, select the correct product and choose Test mode first. Each product and mode has its own connection.
- A Dodo Payments account with access to Test mode and Developer → Webhooks.
- Access to the server code that creates checkout sessions.
Choose one reporting path for each sale: a provider webhook connection or your own Conversions API integration. If your site already reports purchases to Slice, review it before enabling a second path; different order identifiers can produce duplicate sales.
2. Connect the provider
In Slice, open Dodo Payments and click Connect to prepare this product's webhook URL. Keep the panel open while you configure the provider.
- In Dodo Payments, open Developer, then Webhooks, then Add endpoint.
- Paste the URL from Slice and tick the events listed below.
- Save, then copy the endpoint's signing secret (it starts with whsec_).
Select these events. If the provider has friendly event labels, use the matching labels shown in the instructions above:
payment.succeeded
refund.succeeded
dispute.lostReturn to Slice, paste the dodo signing secret and click Connect Dodo Payments. Saving the secret does not prove checkout attribution works yet.
3. Pass the publisher's click ID
On your website, load slice.js on every landing page. It stores the visitor's sclid in the slice_click_id cookie. Your backend can read that cookie when creating checkout; in the browser, window.Slice.clickId() returns the same value after the script loads.
<script src="https://takeslice.com/slice.js" async></script>metadata on the payment or subscription. Keep the existing checkout configuration in the example below and add the attribution field; the snippets show the integration point, not a complete checkout. Only send an ID matching clk_ followed by 32 hexadecimal characters. Omit it if no valid click is available.
await client.checkoutSessions.create({
product_cart: [{ product_id: "pdt_...", quantity: 1 }],
metadata: { slice_click_id: clickId }, // from the slice_click_id cookie
});- Choose a standard webhook endpoint, not a Slack, Discord or other transformed connector.
- Checkout Session metadata needs to reach the resulting payment. Keep existing metadata and add slice_click_id only when you have a valid click.
- Slice uses the payment amount after tax for purchases. Dodo refund adjustments currently use the refund amount as reported, including any tax; verify the result before relying on it.
4. Test delivery and attribution
- In Dodo, open the endpoint's Testing tab and send an example event to check delivery. Example customer data without a Slice click cannot prove attribution.
- Follow a Slice test link and buy through a Test-mode checkout carrying metadata.slice_click_id. Check Payment providers and Tracking in Slice.
- Refund the test purchase and confirm refund.succeeded is received.
Connected means credentials were saved. A received event means a delivery reached Slice. Only an attributed conversion proves the sale was credited to a publisher. Use a test link and matching sandbox purchase for the full check; test conversions create no money.
5. Switch to Live
Return to the same product's Payment providers page and choose Live. Create the production connection separately with the production account, endpoint and credentials. Do not reuse a test click for a live purchase. Confirm the production checkout carries attribution before sharing live publisher links.
Troubleshooting
- Signing secret not visible: open the endpoint's Overview tab after creation. Paste its whsec_ value into Slice, not the Dodo API key.
- Wrong environment: create separate Test and Live endpoints and use the corresponding Slice connection.
- No attribution: inspect metadata on the payment rather than only checking the Checkout Session.
- After rotating a webhook secret in Dodo, update the matching Slice connection as well.
- No event in Slice: check the provider's delivery log, selected events and full HTTPS URL. Localhost cannot receive external webhooks without a public tunnel.
- No credited conversion: check the click ID, selected product, test/live mode, paid amount and currency. Slice currently supports EUR, USD and GBP.
- Disconnecting a webhook provider does not remove the endpoint from that provider's dashboard. Remove or disable it there too. Stripe endpoint removal is attempted automatically.
Official provider documentation
Provider instructions checked against the references below on 29 October 2026. Provider dashboards can change; the event names and attribution fields above describe what Slice currently handles.