LinkStacked
🔌API & integrations 4 min read

Email service integrations (Mailchimp, CSV, webhook)

LinkStacked collects subscribers on your profile and syncs them into the email tool you already use. The audience and its members live in your provider account — LinkStacked just pushes new signups into it on your behalf.

Supported destinations

  • Mailchimp — connect with OAuth (no API key needed); LinkStacked pushes subscribers to one of your Mailchimp audiences in the background.
  • CSV download — package an audience snapshot and import it anywhere.
  • ConvertKit (Kit), Klaviyo, HubSpot — manual-import jobs you can hand off; deeper sync is on the roadmap.
  • Custom webhook — send subscriber events to any endpoint you control.

Connecting Mailchimp (OAuth, recommended)

  1. 1In LinkStacked, go to Dashboard → Email Collection → Integrations.
  2. 2Click "Connect Mailchimp". You'll be sent to Mailchimp to log in and approve LinkStacked.
  3. 3After approving you'll land back on LinkStacked, connected to *your* Mailchimp account.
  4. 4Pick which of your Mailchimp audiences should receive LinkStacked subscribers.
  5. 5Optionally set a scope (all subscribers or one campaign), then click "Queue sync". Phone-only signups are skipped automatically.

If "Connect Mailchimp" returns an error, check that the dashboard URL you are on is registered as a redirect URL in your Mailchimp app. In dev, that means listing http://localhost:3000/dashboard/email-collection (or 127.0.0.1) under the app's redirect URIs.

Mailchimp sync happens server-side as a background job. You can cancel a queued sync, retry a failed one, and disconnect at any time — disconnect deletes the saved access token from LinkStacked. The "Provider sync jobs" panel auto-refreshes every few seconds while jobs are still PENDING/RUNNING and shows a manual refresh button so you can pull the latest status without reloading the page.

What gets synced to Mailchimp

Beyond the email address, LinkStacked maps the following fields to Mailchimp's standard merge tags whenever they're present on a subscriber:

  • Email address → EMAIL (always required by Mailchimp)
  • First name → FNAME
  • Last name → LNAME (read from a custom field named lastName / last_name / surname, or split off a name / fullName field)
  • Phone number → PHONE
  • Company → COMPANY (custom field company / organization / employer)
  • Birthday → BIRTHDAY (custom field birthday / dob / birthDate; LinkStacked normalises to MM/DD, or drops the value if it cannot be parsed)
  • Tags → Mailchimp tags (we send the same tag names you see on the subscriber in LinkStacked)

Mailchimp silently ignores merge tags that aren't defined on your audience, so it's safe to send everything. To capture more fields, add matching custom inputs to your campaign's subscribe form (Email Collection → Campaigns → Edit form).

ADDRESS is not synced yet — Mailchimp requires a structured address (addr1, city, state, zip, country) and LinkStacked currently captures addresses as free text. We will enable this once the form supports structured address inputs.

Why some contacts get skipped (and the sync still succeeds)

Mailchimp protects your sender reputation by refusing to re-subscribe contacts who are in a "compliance state" — i.e. they have already unsubscribed, bounced (cleaned), or marked you as spam in this audience. By law and per Mailchimp's terms, only the contact themselves can opt back in via your subscribe form, captcha, or double opt-in flow. The Mailchimp API returns a per-record 400 with the message "The contact must re-subscribe to get back on the list." for these.

LinkStacked treats those rejections as soft skips: the rest of the batch is still synced into your audience, the job finishes as Completed, and the "Provider sync jobs" panel shows a breakdown like "12 must re-subscribe in Mailchimp before they can receive emails (e.g. user@example.com, …)". You'll see the same breakdown for invalid email addresses and contacts that were previously "forgotten" via Mailchimp's GDPR delete.

To bring affected contacts back you have two safe options:

  • Send them to your LinkStacked subscribe form again (or to your Mailchimp-hosted signup form). When they submit it, Mailchimp records the new opt-in and they go back to subscribed.
  • In Mailchimp, open the contact, click "Add to audience" and choose "Send a confirmation email" — Mailchimp emails them a re-confirmation link they have to click. Doing this from LinkStacked silently is not allowed by Mailchimp.

If the job ends in Failed instead of Completed, that means Mailchimp returned an unrecoverable error (auth expired, audience deleted, or a 5xx). The notes still list any soft-skipped contacts that were collected before the fatal error so you do not lose track of them.

CSV download

Pick a campaign, list, or set of tags and export a CSV with email, phone, name, source, tags, custom fields, and subscribed date. Useful for one-off imports or audits.

Other providers

Other providers create a tracked sync job you complete by importing the CSV (or by piping the data through Zapier or your custom webhook). When native sync ships for them, the job will run automatically.

Privacy and ownership

  • You control the destination: it's always your provider account, never a shared LinkStacked account.
  • You can switch the destination audience at any time.
  • Disconnecting Mailchimp removes the access token; LinkStacked stops pushing subscribers.
  • Compliance (consent records, unsubscribe links, double opt-in) is governed by your provider settings.

New to email lists? Start with the "Sync subscribers to Mailchimp" guide — it walks through registering for Mailchimp, connecting it to LinkStacked, and queueing your first sync.

Was this article helpful?

More in API & integrations

View all

Still need help?

Our support team is available Monday – Friday, 9am – 6pm EST.