Skip to content

Integrate with Magicline

Magicline (sportalliance) exposes a Connect API for creating leads in their member-management system. Integrating with RocketLead is a single HTTP Request automation node — no Zapier or Make intermediary required.

This guide covers the supported direct-API path. Magicline’s Connect API is outbound-only from RocketLead’s perspective (it doesn’t push events back) — see Inbound: Magicline → RocketLead at the bottom for the workaround.

  • A Magicline account with Connect API access.
  • API credentials from the Magicline developer portal. Auth isn’t documented in the OpenAPI spec — request credentials from sportalliance support and follow their portal instructions.
  • The base URL for your environment:
    • Demo: https://connectdemo.api.magicline.com
    • Production: Magicline assigns this per customer — check the developer portal or ask support.
  • The Magicline studioId (integer) for each studio you want to send leads to. See Studio mapping below.

Use case: when a lead is won in RocketLead, hand it off to Magicline as a prospect — and then stop managing that lead in RocketLead.

Trigger on the final state, not on lead creation

Section titled “Trigger on the final state, not on lead creation”
  1. In the RocketLead console → Automations → New automation.
  2. Auslöser → Leadstatus geändert — configure:
    • Lead Pool(s): pick the pool(s) the leads come from.
    • Neuer Status: select your Gewonnen state (or your “won”-equivalent).
    • Vorheriger Status: leave empty.
    • Auch bei Lead-Erstellung auslösen: leave off.
  3. From Aktionen, drag in HTTP Request and wire it to the trigger.

Step 2 — Configure the HTTP Request node

Section titled “Step 2 — Configure the HTTP Request node”
FieldValue
MethodPOST
URLhttps://<your-magicline-base-url>/connect/v1/lead
Headerssee below
Bodysee below
Raw datesEnable (Magicline expects ISO-8601)

Headers — the exact auth header depends on what sportalliance issues you. Common patterns:

{
"Content-Type": "application/json",
"Authorization": "Bearer <your-magicline-token>"
}

Check your developer-portal credentials for the precise header name and value format.

Body — JSON with {{...}} placeholders. Required fields are marked; everything else is optional and can be passed through if you collect it on the RocketLead side:

{
"firstname": "{{<triggerNodeId>.tableEntry.data.firstName}}",
"lastname": "{{<triggerNodeId>.tableEntry.data.lastName}}",
"studioId": 123,
"email": "{{<triggerNodeId>.tableEntry.data.email}}",
"phone": "{{<triggerNodeId>.tableEntry.data.phone}}",
"notes": "Gewonnen am: {{<triggerNodeId>.tableEntry.updatedAt}}. Quelle: RocketLead.",
"locale": "de-DE"
}

Replace <triggerNodeId> with your trigger node’s ID and 123 with your Magicline studioId. The editor’s variable picker generates the placeholder paths when you drag a variable into the body.

  1. Save and activate the automation.
  2. Trigger it once (transition a test lead to Gewonnen).
  3. Check Magicline — the prospect should appear in the studio you targeted.
  4. Check the RocketLead run history. The response carries id, optional uuid (use for follow-up actions), and customerNumber.
FieldTypeDescription
firstnamestringLead’s first name
lastnamestringLead’s last name
studioIdintegerMagicline’s internal studio ID — not a UUID. See Studio mapping.
FieldTypeNotes
emailstringStrongly recommended — needed for any Magicline email follow-up.
phonestringRecommended for member outreach.
dateOfBirthstringISO-8601 date (YYYY-MM-DD). Required for some contract types downstream.
genderenumMALE | FEMALE | UNISEX
notesstringFree-text note — equivalent to MATOOL’s memo. Great place to surface “Gewonnen am …”, course interest, kid’s name, etc.
localestringe.g., de-DE, en-US. Magicline uses this for default communications language.
sourceCampaignIdintegerMagicline-side campaign ID to attribute the lead — useful for ROI tracking in Magicline.

street, houseNumber, door, floor, stairway, additionalAddressInformation, streetBlock, streetType, zipCode, city, province, provinceCode, countryCode — pass through if you collect them.

FieldNotes
privacyConfigurationObject with booleans for email, letter, phone, textMessage, mySportsMessage — marketing consent per channel.
communicationPreferencesArray of { messageCategoryId, activeCommunicationChannels[] } — finer-grained per-category opt-ins.

Set these if your RocketLead form captures GDPR consent and you want it carried over.

Magicline identifies studios by integer ID; RocketLead uses UUIDs. There’s no automatic mapping — you have to keep a static lookup.

Two practical approaches:

A. Hardcode per automation. If you only have one or two studios, just hardcode the studioId in the body literally ("studioId": 123). Create one automation per studio with the trigger filtered to that studio’s Lead Pool.

B. Variable-driven for many studios. Set a Variable setzen helper node before the HTTP Request that maps the RocketLead studioId UUID to the Magicline integer, then reference it in the body via {{$global.magicline_studio_id}}. More flexibility, more configuration.

Get your Magicline studio IDs from:

  • GET /connect/v2/studio (Magicline’s Connect API) — lists all studios with their integer IDs.
  • The Magicline admin UI — visible in studio settings / URLs.
{
"id": 12345,
"uuid": "2340b1cc-3fe7-4f81-8eca-f92181dd2bb4",
"customerNumber": "C-2026-0042"
}

uuid is the canonical identifier for follow-up actions (booking a trial session, signing a contract) via Magicline’s Connect API. Store it on the RocketLead side (e.g., in a custom field via Connect API → Leads PATCH) if you need to reference it later.

SymptomCause
403 ForbiddenAPI credentials missing/wrong, or the studio doesn’t have Connect API enabled. Check the developer portal.
400 VALIDATION_FAILEDRequired field empty or wrongly typed. Magicline returns errorCodes[] — check the array for the specific category.
400 REQUIRED_PARAMETER_MISSINGMost commonly studioId, firstname, or lastname.
409 CONFLICTA lead with matching unique data (e.g., email) already exists in Magicline. Decide whether to dedupe upstream or just suppress these.
400 OPERATION_NOT_ALLOWED_FOR_STUDIOThe studioId exists but doesn’t have lead-creation enabled in Magicline.
500 SERVER_ERRORMagicline-side issue — RocketLead’s automation retries network failures automatically.
Wrong studio receives the prospectstudioId mapping is off. Verify against GET /connect/v2/studio.
  • studioId is integer, not UUID. Don’t try to substitute a RocketLead studio UUID — Magicline will reject the request.
  • Auth lives in the developer portal, not the spec. The OpenAPI spec doesn’t include securitySchemes — sportalliance issues credentials and documents the exact header format separately.
  • Magicline’s Connect API is outbound-create only. No update endpoint, no event push. After creation, the lead’s lifecycle is managed in Magicline.
  • Demo vs production have different base URLs and credentials. Don’t accidentally send production leads to the demo environment.
  • Email is technically optional but practically required. Most Magicline downstream workflows (contract signing, trial booking, communications) need an email. Make sure your “won” automation only fires when email is populated, or build a fallback.

Magicline’s Connect API doesn’t push events out — there’s no webhook surface here. If you need Magicline events to land in RocketLead:

  1. Use Magicline’s Zapier app (if available for your plan) and bridge through Zapier — see the Zapier integration guide.
  2. Or poll Magicline periodically from your own backend and POST to a RocketLead Ingress webhook when something interesting happens.

In practice, the handoff-on-won pattern means most users don’t need inbound from Magicline at all — once the lead is won and handed off, RocketLead has done its job.