How to Connect Jotform to BytePhase (Repair Shop Setup Guide)
Connect a Jotform form to BytePhase and every submission lands in your repair shop CRM automatically — as a new Lead or a Self Check-in, mapped to whichever fields you choose, with no copy-paste and no Zapier account required. Jotform posts straight to a webhook URL that BytePhase gives you, so the setup is: generate the URL in BytePhase, paste it into Jotform’s Webhooks integration, send a test submission, map the fields, and activate. It takes about 10 minutes.
What You’ll Need
| Requirement | Notes |
|---|---|
| A BytePhase account with access to Business Settings | Needed to open Settings → Integrations |
| A Jotform account with a published form | Webhooks are available under the form’s Settings → Integrations tab |
| About 10 minutes | Most of it is copy-pasting a URL and clicking through the wizard |
What the Jotform Integration Does
A Jotform submission can create one of two things in BytePhase: a Lead (goes into Reception → Contact Us as an enquiry your team follows up) or a Self Check-in (a customer-submitted device drop-off, matched by mobile number, that your team converts into a repair job with one click once the device physically arrives). Pick Lead for enquiry or quote-request forms. Pick Self Check-in if the form asks a customer to describe a device they’re dropping off or shipping in. BytePhase never creates a job or ticket automatically from either destination — that conversion is a deliberate manual step.
This is a one-way flow: a Jotform submission creates or updates a record inside BytePhase, but nothing goes back the other way. There’s no two-way sync — a status change inside BytePhase never reaches Jotform, and BytePhase never queries Jotform for anything after the initial submission. For a repair shop, the typical use case is a “book a repair” or “request a quote” form embedded on your website or shared as a link: a customer fills it out, and by the time your Reception team checks their screen, the enquiry is already sitting there with the device details attached.
How the Jotform Integration Works
Someone submits your form
A customer fills in the Jotform form you already use — nothing changes for them.
Jotform calls your webhook
Jotform posts the submission to your BytePhase webhook URL as soon as the form is completed.
Your field map is applied
Each answer is matched to a BytePhase field. Anything you did not map is kept as a custom field.
The record is created
It lands as a Lead or a Self Check-in — whichever destination that form is set to — and is written to the Activity log.
Step 1: Open the Jotform Card in BytePhase
Log into BytePhase and go to Settings → Integrations. Under Website & Forms you’ll find a Jotform card. Click Connect to start the setup wizard.
Step 2: Choose Where Submissions Land
The wizard opens on Destination, and it comes first because everything after it depends on the answer: the webhook URL you copy in the next step has the destination pinned into it. Choose Self Check-in if the form should open a job for a device that is coming in, or Lead if it should raise an enquiry for your team to follow up. You are not choosing once and for all — see running both side by side below.
Step 3: Copy Your Webhook URL
The wizard’s Connect step generates a webhook URL in the form:
https://<tenant>.api.bytephase.com/api/<tenant-slug>/integrations/ingest/jotform?token=YOUR_KEY&destination=self_checkin
Copy it now — the key embedded in it is shown once. One thing to know up front: Jotform’s webhook system can’t send custom headers, so unlike some other integrations there’s no separate API-key header here — the key has to ride inside the URL itself. Treat the whole URL as a secret, not just the key portion.
Step 4: Add the Webhook Inside Jotform
In Jotform, open your form and go to Settings → Integrations → WebHooks, then:
- Paste the webhook URL from Step 3 into the WebHooks field
- Save / complete the integration
Jotform’s own help article walks through the same panel with screenshots: how to set up a webhook with Jotform.
Step 5: Send a Test Submission and Map Your Fields
Submit your own Jotform form once. Back in the BytePhase wizard, click Check now (it also polls automatically every few seconds). BytePhase reads Jotform’s raw submission payload and lists every field it found — Jotform prefixes each question key with q<N>_, which BytePhase strips off automatically, and multi-value answers (like checkboxes) are joined into a single value.
The wizard auto-matches obvious pairs by name — “email,” “mobile,” “name” and similar aliases map themselves — but mapping is required for Jotform: review every row and confirm at least one of email or mobile is mapped before you can continue. There are no server-side defaults or transforms; whatever you don’t map is preserved as a custom field automatically rather than dropped.
Note also that Jotform submissions aren’t signature-verified — Jotform doesn’t support sending a verifiable signature the way Typeform does, so BytePhase accepts anything posted to your webhook URL. That’s a reason to keep the URL private (more in Security below).
Step 6: Set the Duplicate Policy and Activate
Choose how repeat submissions are handled. The defaults are sensible starting points — Lead defaults to skip a repeat submission (matched by email OR mobile + country code); Self Check-in defaults to create a new record even for a returning customer (matched by mobile against any check-in still open). Review the summary screen and click Activate integration. Nothing goes live until you do.
Run Self Check-in and Lead Side by Side
You do not have to pick one for the whole account. A single integration can serve several forms at once, and each one carries its own destination and its own field map. BytePhase keys every entry by form and destination together, and the destination pinned in the URL is absolute — a Self Check-in URL will never fall through to a Lead entry or borrow its field mapping.
So an intake form can open a Self Check-in while a quote-request form raises a Lead, from the same Jotform account, running in parallel. Add the second form in the wizard, choose the other destination, and give it its own URL. The Activity log records which destination each submission was routed to, so the two never blur together.
Field Mapping Reference
Lead and Self Check-in are two different record types, so they accept two different sets of fields. Map as many as your Jotform form collects — anything left over is kept as a custom field, not discarded. Pick the table that matches the destination you chose in Step 2.
Lead fields
Use this table when the destination is Lead — an enquiry to follow up, before any device is handed over.
| BytePhase Field | Required? | Notes |
|---|---|---|
name | Yes | Max 60 characters |
email | One of email or mobile | Max 255 characters |
mobile_number | One of email or mobile | Max 20 characters |
mobile_country_code | No | Max 10 characters; paired with mobile_number for duplicate matching |
phone_number | No | Secondary phone number, max 20 characters |
contact_person_name | No | Max 60 characters — for enquiries raised on behalf of a business |
source | No | Max 100 characters; matched to an existing lead source by name |
role_id | No | One of 7, 8 or 9; defaults to End User when omitted |
next_follow_up | No | Date — schedules the first follow-up |
comment | No | Free text |
device_type | No | Max 100 characters; matched to an existing device type by name |
device_brand | No | Max 100 characters; an unmatched value is kept as a custom brand name |
device_model | No | Max 100 characters; an unmatched value is kept as a custom model name |
address.address_line | No | Max 200 characters |
address.city | No | Max 100 characters |
address.state | No | Max 100 characters |
address.zip_code | No | Max 20 characters |
Duplicate handling: Leads default to Skip. BytePhase looks for an existing lead with the same mobile_number and mobile_country_code, or the same email, and reuses it instead of creating a second one.
Self Check-in fields
Use this table when the destination is Self Check-in — a customer handing in a device, so the record carries serial numbers, accessories and pickup details a Lead has no place for.
| BytePhase Field | Required? | Notes |
|---|---|---|
name | Yes | Max 255 characters |
email | One of email or mobile | Max 255 characters |
mobile_number | One of email or mobile | Max 20 characters |
mobile_country_code | No | Max 10 characters |
device_type | No | Max 255 characters; matched to an existing device type by name |
device_brand | No | Max 255 characters; an unmatched value is kept as a custom brand name |
device_model | No | Max 255 characters; an unmatched value is kept as a custom model name |
serial_number | No | Max 255 characters |
serial_number_2 | No | Max 191 characters — a second serial or IMEI |
device_password | No | Max 191 characters — unlock code or device password |
accessories | No | A list, or a comma-separated string — split into individual items |
comment | No | Free text — the reported fault |
is_recovery | No | Boolean — flags the job as a data-recovery case |
is_pickup_booked | No | Boolean — marks that a pickup was requested |
scheduled_on | No | Date — the requested pickup or drop-off date |
custom_fields | No | Object; each value max 1,000 characters |
address.address_line | No | Max 255 characters |
address.city | No | Max 255 characters |
address.state | No | Max 255 characters |
address.zip_code | No | Max 20 characters |
Duplicate handling: Self Check-ins default to Create, so every submission becomes its own check-in — the right behaviour when the same customer brings in a second device. Only if you change the policy to Skip does BytePhase look for a match, and it then matches on mobile_number against open check-ins only.
Testing & Monitoring Your Submissions
Every submission — successful, duplicate, failed, or simply received — shows up on the integration’s Activity screen, with both Jotform’s raw payload and the mapped version BytePhase saved. Use Send test to fire a synthetic submission without touching your live form, and the one-click Retry action to replay anything that failed once you’ve fixed the cause. Three failures in a row trigger a warning banner in the app; five in a row also send an email to your tenant’s support address. Submission logs are kept for 90 days.
Troubleshooting
| Symptom | Likely Cause | Fix |
|---|---|---|
| 401 Unauthorized | The token embedded in the webhook URL is wrong, or the key was rotated in BytePhase | Re-copy the full webhook URL from Settings → Integrations → Jotform and re-paste it into Jotform |
| 422 Unprocessable Entity | Neither email nor mobile is mapped, or a required field is missing from the submission | Reopen the wizard’s field mapping step and confirm at least one contact field is mapped |
status: duplicate in the Activity log | The submission matched an existing Lead or open Self Check-in under your duplicate policy | Expected behavior — adjust the duplicate policy (skip/create) if it’s catching more than you want |
| The same submission creates two Leads | An old or duplicate webhook is still attached to the form alongside the current one | Open Settings → Integrations → WebHooks in Jotform and remove any extra entries, keeping only the current BytePhase URL |
| “Nothing detected” after clicking Check now | The test submission wasn’t actually sent, or the webhook URL was pasted with a typo or trailing space | Submit the Jotform form yourself once, then click Check now again |
| 429 Too Many Requests | More than 60 requests per minute hit your webhook URL | Rare for a single form — if it recurs, check for a duplicate webhook firing on the same form |
Security
Your API key is sha256-hashed at rest — BytePhase can verify it but can’t display it again, so save the URL somewhere safe the moment you copy it. Rotate it any time from the integration card; the old one stops working immediately. Because Jotform can’t send custom headers, the key rides inside the webhook URL’s query string rather than a header — that means it can end up in Jotform’s own delivery logs, so don’t paste the URL into a public form description, a screenshot, or a chat message, and rotate it periodically as routine hygiene. Submissions are isolated per tenant — this webhook only ever writes into your own BytePhase account.
Start Capturing Jotform Leads in BytePhase
Once activated, every Jotform submission becomes a Lead or Self Check-in in BytePhase without anyone re-typing a form response into your CRM. From a Self Check-in, converting to a repair ticket is one click once the device is actually in front of you. If your team runs Typeform instead, see our Typeform setup guide, which also supports signature verification; if you want more flexibility than a native webhook offers, the n8n integration guide and the Zapier guide cover the automation-platform routes. See every connector BytePhase supports on the integrations page.
BytePhase includes the Jotform integration on every plan, with a 15-day free trial and no credit card required. Start your free BytePhase trial →










