Customer.io

Integration

Customer.io

Plandalf integrates with Customer.io as a email, marketing, website, sdk platform.

What it does

Product surfaces

Where Customer.io fits in the buying workflow

Integrations work best when the checkout surface, payment state, invoice record, and post-purchase automation all point at the same commercial object. These product screens show the Plandalf controls that should be configured before Customer.io receives checkout, payment, tax, or workflow context.

The Numi offer editor showing layout, product, theme, automation, invoice, and settings controls.
The Numi checkout elements palette showing content, interactive, and selling blocks.
The Numi offer editor automation tab showing sequence controls beside the checkout canvas.

Purchase events can start follow-up

Customer.io should fit into the work after checkout: fulfilment, records, CRM updates, support context, webhooks, and sequences.

The Numi offer editor showing hosted checkout mode controls.

Builder paths

Stack guides that use Customer.io

Use these stack guides when a builder needs the whole path: sales surface, Plandalf offer, payment handoff, automation, fulfilment, records, and downstream integrations.

Overview

Customer.io is an engagement platform for lifecycle and transactional messaging. Its Campaigns product supports HTTP Request actions natively and speaks JSON, making it one of the cleanest Plandalf enrolment bridges in this list.

What Plandalf does here

  • Countdown in campaigns — Liquid {{ customer.email }} passes straight into the <img src> query string.
  • Direct enrolment — the HTTP Request action posts JSON to the promo’s catch URL with no middleware.

Setup templates

Drop-in implementations

Copy-paste setups for the most common ways to wire Customer.io into Plandalf.

promo · email

Drop the Plandalf countdown image into a Customer.io campaign

Paste this <img> tag into a Code block in your Customer.io campaign. {{ customer.email }} is Customer.io's Liquid attribute reference — it substitutes at send time.

<img
  src="{{ promo.countdown_url }}?ref={{ customer.email }}"
  alt="Time remaining on this offer"
/>

promo · automation

Enrol Customer.io people via a Campaign webhook

  1. In Customer.io, create (or edit) a Campaign with whatever trigger represents a new promo participant — Event, Segment entered, or Attribute changed.
  2. Add a workflow action: HTTP Request.
  3. Method POST, URL:
    {{ promo.catch_url }}
    
  4. Content type application/json, body:
    {"email": "{{ customer.email }}", "ref": "{{ customer.email }}"}
    
  5. Start the campaign.

Automation graph

Connecting Customer.io

How Customer.io participates in Plandalf sequences: what events it exposes upward, and what actions Plandalf can perform on it.

Triggers from Customer.io

Events Plandalf can subscribe to through webhooks, API work, checkout state, payment context, and connected integrations.

customer-io.subscriber_added
Fires when a new subscriber is added to Customer.io.
customer-io.automation_step_reached
Fires when a contact reaches a designated step in a Customer.io automation.
customer-io.form_submitted
Fires when a form on Customer.io is submitted.
customer-io.webhook
Fires when Customer.io POSTs to a Plandalf webhook URL — use for anything not covered by a native trigger.

Actions on Customer.io

Things Plandalf sequences can do after checkout, payment, invoice, customer, or deadline events.

customer-io.add_subscriber
Add a contact to a list or audience in Customer.io.
customer-io.tag
Apply a tag or segment to an existing Customer.io contact.
customer-io.send_email
Send a one-off transactional or broadcast email through Customer.io.
customer-io.start_automation
Enrol a contact into a Customer.io automation.
customer-io.custom_api_call
Hit any Customer.io REST endpoint with a templated payload.

Embeddable surfaces: Plandalf countdown image and buy button HTML · Per-recipient countdown GIF with merge-tag substitution

Example sequence
trigger: stripe.payment_succeeded
actions:
  - customer-io.add_subscriber:
      list: paying-customers
      tag: tier-${plan}
  - plandalf.grant_entitlement: ${product_slug}

Integration methods

How Customer.io connects to Plandalf

Each method below is the minimum viable setup. Pick the one closest to how you already use Customer.io with checkout, payments, invoices, webhooks, API work, SDK checkout, and integrations.

  1. Method 1

    Embed a Plandalf buy button

    Drop the Plandalf embed script into a Customer.io HTML block and tag any element with `data-plandalf-present` to open the configured flow on click.

    <script src="https://cdn.plandalf.com/embed.js" async></script>
    
    <button data-plandalf-present="offer_abc123">
      Buy now
    </button>
  2. Method 2

    Drop in a per-recipient countdown image

    Add an HTML block to any Customer.io email and paste the Plandalf countdown URL. Customer.io's merge tag `{{customer.email}}` substitutes per recipient so each subscriber sees a timer pegged to their own deadline.

    <img
      src="https://cdn.plandalf.com/timers/{TIMER_ID}.gif?ref={{customer.email}}"
      alt="Time remaining on this offer"
      width="600"
      height="120"
    />
  3. Method 3

    Trigger a sequence from a form

    Point a Customer.io form's webhook / POST URL at Plandalf's intake endpoint and every submission starts whatever sequence you've mapped to it.

    curl -X POST https://api.plandalf.com/v1/intake/customer-io \
      -H "Content-Type: application/json" \
      -d '{"email": "{{ form.email }}", "source": "customer-io"}'
  4. Method 4

    Enrol from an automation step

    Inside Customer.io's automation builder, add a Webhook step that POSTs the contact to a Plandalf sequence catch URL. Use this to mirror Customer.io journey logic into Plandalf without re-building the segmentation.

    {
      "email": "{{ contact.email }}",
      "sequence": "post-signup-onboarding",
      "source": "customer-io"
    }
  5. Method 5

    REST API webhook

    For anything not covered by a native trigger, configure a Customer.io webhook to POST to Plandalf. The payload is forwarded into the sequence as `${event}`.

    curl -X POST https://api.plandalf.com/v1/webhooks/customer-io \
      -H "Authorization: Bearer $PLANDALF_API_KEY" \
      -H "Content-Type: application/json" \
      -d @event.json
Official Customer.io docs and sign-up: customer.io

FAQ

Common questions about the Customer.io integration

Do I need a paid plan to use Customer.io with Plandalf?

Plandalf itself is free to connect. Customer.io's native webhook step is on its paid tiers — on the free plan, route the trigger through Zapier instead, which still works end-to-end.

How long does setup take?

Under 10 minutes. OAuth (or paste an API key), pick the lists/segments you care about, and you're live. No code unless you want it.

Can I disconnect Customer.io later without losing data?

Yes. Disconnecting only revokes the credentials — historical events Plandalf fired stay in your sequence logs, and Customer.io's own records are untouched. You can reconnect any time and resume from the last seen event.

Does Plandalf store Customer.io data?

Plandalf stores the Customer.io contact ID and the events Plandalf fired against that contact. Email content stays in Customer.io; Plandalf doesn't mirror your audience or newsletter archive.

What if my email need isn't covered by the actions or triggers listed here?

Use the generic `customer-io.custom_api_call` action or the inbound `customer-io.webhook` trigger. Anything Customer.io's REST API can do, a Plandalf sequence can drive.

Is there a usage limit?

Plandalf respects Customer.io's API rate limits and backs off on 429s. For very high-volume use cases, ask about a dedicated worker pool.

Where do I find Customer.io's own documentation?

Customer.io's homepage at https://customer.io links to their developer docs. For Plandalf-side questions about the Customer.io integration, see the Plandalf docs.

Feature detail