Skip to content

n8n

n8n needs no BytePhase-specific node. The HTTP Request node with a Header Auth credential calls the intake endpoints directly.

Settings → Integrations → add an integration → provider type n8n → copy the key.

An n8n-typed key can create leads and self check-ins. If a workflow genuinely needs to read recent records (the /api/zapier/triggers/* endpoints), create a separate integration with the Zapier type for that workflow only — and keep in mind that key can then read customers, leads, repairs and payments. See Authentication.

Credentials → New → Header Auth:

Field Value
Name Authorization
Value Bearer bp_your_api_key

Give it a name like “BytePhase — Harbor Repair Co.”.

Add an HTTP Request node:

Setting Value
Method GET
URL https://harbor-repair.api.bytephase.com/api/integrations/ping
Authentication Generic Credential Type → Header Auth → the credential above
Send Headers Accept: application/json

Execute it. "status": "connected" means you are set. A 401 means the key or header is wrong; a 412 means the workspace subdomain is wrong. See Environments.

Change the node to:

Setting Value
Method POST
URL https://harbor-repair.api.bytephase.com/api/integrations/leads
Send Headers Accept: application/json, Idempotency-Key: {{ $json.submissionId }} (something unique per submission)
Send Body JSON

Body (using expressions from a previous node, here a Webhook node receiving a website form):

{
"name": "{{ $json.body.name }}",
"mobile_number": "{{ $json.body.phone }}",
"mobile_country_code": "+1",
"email": "{{ $json.body.email }}",
"device_type": "{{ $json.body.device }}",
"comment": "{{ $json.body.message }}",
"source": "Website"
}

name is required, and at least one of mobile_number or email. Any field BytePhase does not recognise becomes a custom field on the lead. Full field list in Custom Integrations.

Example workflow: website form → BytePhase lead

Section titled “Example workflow: website form → BytePhase lead”

Import this JSON into n8n (Workflows → Import from file / paste), then select your Header Auth credential on the HTTP Request node and set your workspace in the URL.

{
"name": "Website form → BytePhase lead",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "bytephase-lead",
"responseMode": "onReceived",
"options": {}
},
"id": "a1b2c3d4-0000-4000-8000-000000000001",
"name": "Website form (Webhook)",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [0, 0],
"webhookId": "bytephase-lead"
},
{
"parameters": {
"method": "POST",
"url": "https://YOUR-WORKSPACE.api.bytephase.com/api/integrations/leads",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{ "name": "Accept", "value": "application/json" },
{ "name": "Idempotency-Key", "value": "={{ $json.body.submission_id || $execution.id }}" }
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({\n name: $json.body.name,\n mobile_number: $json.body.phone,\n mobile_country_code: '+1',\n email: $json.body.email,\n device_type: $json.body.device,\n comment: $json.body.message,\n source: 'Website'\n}) }}",
"options": {}
},
"id": "a1b2c3d4-0000-4000-8000-000000000002",
"name": "Create BytePhase lead",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [280, 0]
}
],
"connections": {
"Website form (Webhook)": {
"main": [[{ "node": "Create BytePhase lead", "type": "main", "index": 0 }]]
}
},
"settings": {
"executionOrder": "v1"
}
}

What it does: your website posts the form to the n8n webhook URL; n8n creates the lead. The Idempotency-Key uses the form’s own submission id when your site sends one, and falls back to the n8n execution id, so a retried execution does not create a second lead.

The HTTP Request node outputs the response body. status is completed (created), duplicate (already existed), or received (parked until the form is mapped in BytePhase). All three are success from the workflow’s point of view; see Submissions & Troubleshooting.

To branch on errors, enable Settings → On Error → Continue (or “Continue on fail” in older versions) on the node and inspect error.code from the response. Only retry 429, 423 and 5xx, and always with the same Idempotency-Key. See Errors.

The 60-per-minute limit is keyed on your API key, not on n8n Cloud’s IP addresses, so other n8n customers’ traffic cannot throttle you. A scheduled workflow should not call the API more than once a minute per key; a loop over many items should add a short Wait between iterations. See Rate Limits.

Everything on this page is outbound from n8n to BytePhase, so it works from a self-hosted n8n on a private network as long as it can reach the internet. BytePhase does not currently call n8n (there are no outbound webhooks yet), so there is nothing to expose. To react to new records from n8n today, poll the /api/zapier/triggers/* endpoints on a schedule with a Zapier-typed key; see Pagination & Data.