The four connection methods at a glance
Sources: Zapier's systeme.io app page, systeme.io's webhook, Google Sheets and API help articles, and systeme.io's published plan limits. [1][3][5][6][10]
| Method | Direction | What it can do | Cost or limit to know |
|---|---|---|---|
| Zapier app | In and out | Triggers: new opt-in, sale, tag added, webinar registration, completed campaign. Actions: create or update contact with tags, grant or revoke course access, remove tag, subscribe or unsubscribe from campaign | Zapier Free: 100 tasks a month, two-step Zaps |
| Outgoing webhooks | Out | Contact created, tag added or removed, opt-in, new sale, sale canceled | HTTPS endpoint required; up to 12 retries |
| Native Google Sheets action | Out | Add a new row to an existing sheet from a Workflow | Workflows only; Free plan lists 1 workflow |
| Public API | In and out | Contacts, tags, newsletters, campaigns, funnels, courses, communities, price plans and more | Up to 3 keys; server-side use only |
Outgoing webhooks: setup and behaviour
Webhooks are configured under your profile picture, Settings, Webhooks, Create. You give it a name, the destination URL and a secret key, and toggle it active. The available events are contact created, contact tag added, contact tag removed, opt-in, new sale (funnels and creator stores) and sale canceled, which covers subscription cancellations and one-time refunds. The endpoint must use HTTPS. [1]
If a delivery fails, systeme.io retries up to 12 times, with gaps that grow to about 24 hours. Each webhook has View logs in its menu, showing a message log and a delivery log you can copy for a developer. [1]
A second documented route sends a webhook as an action, from an opt-in page's automation rules or from a Workflow. Payloads are JSON with a type such as contact.optin.completed or customer.sale.completed, a data object and account and created_at fields. Requests come from 185.236.142.1, 185.236.142.2 and 185.236.142.3, which matters if your server uses an allow list. systeme.io suggests RequestBin or Pipedream for testing. [2]
Worked connection 1: a Google Sheets lead log
systeme.io now has a native Google Sheets action, and its help article says you no longer need external services like Zapier for this. Connect Google under Settings, Integrations, Google Sheets, granting access only to the files you need. Create the sheet first with column headers, because the action cannot create a sheet from scratch. [5]
Then build a Workflow with an opt-in trigger, add the action Add a new row to a Google Sheet, pick the Drive, file and worksheet, and map fields such as email, first name and date to columns. Dates arrive as YYYY-MM-DD HH:MM:SS in your time zone. Run the workflow's test and confirm a row appears. [5]
Trade-off: the action works only in Workflows, not simple automation rules, and systeme.io's plan data lists 1 workflow on Free and 5 on Startup. If your one Free workflow is already used, the Zapier route (New Optin trigger to Google Sheets Create Spreadsheet Row) is a two-step Zap that fits Zapier Free's two-step limit. [5][9][10][12]
Worked connection 2: a Calendly booking that tags the contact
systeme.io's own Calendly article only covers embedding a Calendly, TidyCal or YouCanBook.me widget in a page or popup with a Raw HTML element. It does not tag anyone. To tag a contact when they book, use Zapier. [11]
Zapier's Calendly and systeme.io page lists the Calendly trigger Invitee Created or Rescheduled and the systeme.io action Create or Update a Contact, Including Adding Tags. Map the invitee email and name, choose a tag such as booked-call, and the tag can then drive a follow-up email through an automation rule. This is a two-step Zap, which fits Zapier Free's two-step and 100-tasks-a-month limits as long as neither app is a premium app on your account; a busy calendar will need a paid tier. [6][7][9]
Worked connection 3: a Stripe sale outside systeme.io that grants course access
If you sell through a Stripe checkout that is not built in systeme.io, Zapier can bridge it. Zapier's Stripe and systeme.io page lists Stripe triggers including New Payment and Checkout Session Completed, and the systeme.io action Create or Update a Contact and Grant Access to Course. [8]
Use Checkout Session Completed when you want one run per completed checkout, map the customer email and name, and choose the course. Pair it with a second Zap using Revoke Access to Course if you handle refunds, because nothing in the grant Zap removes access when you refund in Stripe. Test with a real low-value purchase and refund rather than assuming the mapping is correct. [6][8]
- Confirm the course exists in systeme.io before building the Zap; the action needs it.
- Check the contact in systeme.io shows course access after the test purchase.
- Watch the Zap history for duplicate runs on the same payment.
The public API: when you need it
Create API keys under Settings, MCP and API keys, Public API keys. You can have up to 3 keys, each with a unique name and optional expiry; copy the key immediately because it cannot be viewed again, and systeme.io emails you when a key is created. The API covers contacts, tags, custom fields, newsletters, campaigns, funnels, price plans, courses, communities, automation rules, webhooks and more. [3]
Send the key in the X-API-Key header. The quota is shared across all keys and reported in X-RateLimit headers; exceeding it returns 429 with a Retry-After header. systeme.io says using the API from public pages is not advisable because it exposes the key. The API is the right choice for developers syncing a custom app; for everyone else, Zapier or webhooks are less work. [4]
Questions before you decide
Does systeme.io integrate with Zapier?
Yes. Zapier's systeme.io app lists 5 triggers, including New Optin, New Sale and New Tag Added to Contact, and 6 actions, including creating or updating a contact with tags and granting course access.
Can systeme.io send webhooks?
Yes. Under Settings, Webhooks you can send events such as contact created, tag added or removed, opt-in, new sale and sale canceled to an HTTPS endpoint, with up to 12 retries on failure.
Do I need Zapier to send systeme.io leads to Google Sheets?
No. systeme.io has a native Add a new row to a Google Sheet action in Workflows. The sheet must already exist with headers, and the Free plan lists only 1 workflow.
How many API keys can a systeme.io account have?
Up to 3 public API keys per account. Keys are sent in the X-API-Key header and should only be used server-side.
Sources & verification
Product details and prices can change. Check the linked provider before buying.
- systeme.io Help: How to use systeme.io's webhook service Accessed 30 Oct 2026
- systeme.io Help: Create and trigger a webhook after an opt-in or a sale Accessed 30 Oct 2026
- systeme.io Help: How to use the public API Accessed 30 Oct 2026
- systeme.io developer docs: Public API Accessed 30 Oct 2026
- systeme.io Help: How to integrate Google Sheets Accessed 30 Oct 2026
- Zapier: systeme.io integrations Accessed 30 Oct 2026
- Zapier: Calendly and systeme.io integration Accessed 30 Oct 2026
- Zapier: Stripe and systeme.io integration Accessed 30 Oct 2026
- Zapier pricing Accessed 30 Oct 2026
- systeme.io published plan limits (user-plans data) Accessed 30 Oct 2026
- systeme.io Help: Integrate appointment scheduling software Accessed 30 Oct 2026
- Zapier: Google Sheets and systeme.io integration Accessed 30 Oct 2026
Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.
