Send leads to Juiced by webhook: setup and troubleshooting
Every Juiced integration ends the same way: an HTTPS POST of JSON to the Juiced leads endpoint. This page covers what any form, funnel or connector needs to send, how to test it, how to read the result, and how to fix the errors people hit most.
Any tool that can POST JSON with an Authorization header can send leads to Juiced. Send POST https://usejuiced.com/api/v1/leads with your field names as top-level JSON keys.
You need a source in Juiced, its bearer token (or API key and secret for Basic auth), and the field names from the source's View API Spec page. zip is always required.
Most failures are a bad Authorization header (a replaced token, or a stray space or line break) or field keys that do not match the Juiced field titles. Entries > Incoming logs shows exactly what arrived.
What any tool needs to send
Juiced documents one format: a JSON body with top-level keys, sent with an auth header. If your tool can do this, connect it directly. If it cannot (it only sends form-encoded data, nests fields inside an object, or cannot add headers), send the lead through Zapier or Make instead.
| Setting | Value |
|---|---|
| URL | https://usejuiced.com/api/v1/leads (full lead). For ping post, first https://usejuiced.com/api/v1/ping, then post the full lead with ping_id set to the ping's data.id. |
| Method | POST |
| Headers | Authorization, Content-Type: application/json, Accept: application/json. Optional X-Partner-Id for partner-attributed traffic. |
| Body | JSON. Each field is a top-level key named exactly like the field Title in Juiced. No form-encoded bodies, no nested objects, no token in the URL. |
| Required | zip on every lead, plus any field marked Required for post. |
Bearer token or Basic auth
Both credentials live on the source's Authentication tab. A bearer token is the simpler choice for most tools. Click New bearer token, then Create token, and copy it right away: it is shown once.
Authorization: Bearer YOUR_TOKEN
Use exactly one space after Bearer, and no spaces or line breaks inside or after the token. Creating a new token expires the previous one 24 hours later.
For Basic auth, the API Key is the username and the API Secret is the password. If your tool has username and password fields for Basic auth, enter them there. If you must type the header yourself, the standard Basic format is the key and secret joined by a colon, base64-encoded:
Authorization: Basic <base64 of api_key:api_secret>
The key and secret cannot be regenerated.
Example request
POST https://usejuiced.com/api/v1/leads
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
Accept: application/json
{
"first_name": "Jane",
"last_name": "Doe",
"email": "jane@example.com",
"phone": "5555550123",
"zip": "00001"
}
Finding your field names
Open the source, then Overview > More actions (⋯) > View API Spec. The page shows your credentials, the exact endpoint URL, an example cURL request and the Field Reference: every accepted field with its type and whether it is Required for post or Required for ping. The link expires after 7 days; open View API Spec again for a fresh one.
Keys are snake_case, for example first_name, last_name, email, phone, address_1, city, state and zip. To accept a field that is not listed, add it on the lead category (Ingest > Lead Categories) or on the source's Fields tab with New field: set the Title, Type, Required for post, Required for ping and Deliverable (on if buyers should receive it). A title may use letters, numbers and underscores only and must start with a letter or underscore. See setting up a source.
Step by step
-
Create a source and copy a token
In Juiced, go to Ingest > Sources > New source, fill in the form and click Create source. On the Authentication tab, create a bearer token and copy it.
-
Open View API Spec
Copy the endpoint URL and note the field names in the Field Reference. Add any missing fields before you map.
-
Set up the request in your tool
Enter the URL, method and headers from the table above, choose a JSON body, and map each form field to its Juiced key. Our per-tool guides on the integrations hub show where each setting lives.
-
Turn on test mode and send a test lead
Edit the source and turn on Test mode. Submit a lead from your tool with a test zip code from the table below.
-
Check Incoming logs
Open Entries > Incoming logs, set the Test mode filter to Test only, and open the post inspector to confirm the payload and response.
-
Turn off test mode and go live
Edit the source and turn Test mode off before sending live leads.
Testing with test zip codes
With test mode on, these zip codes return fixed results under the default status mapping.
| Zip | Status returned | Lead result |
|---|---|---|
00001 | accepted | Assigned |
00002 | duplicate | Duplicate |
00003 | rejected | Audit |
00004 | rejected | Unassigned |
00005 | accepted | Marketplace |
| Any other zip | rejected | Marked as test data and moved to Audit |
Reading the result
Juiced answers every post. A 201 Created returns data.id, data.status and data.price (what the source earns, 0 unless accepted). By default, accepted means assigned, posted to a partner, marketplace or Club; rejected means Unassigned, Audit or Uncategorized (received but not sold); the third status is duplicate. Errors return error.code; branch on the code, not the message. A 401 is unauthenticated. A 422 is validation_failed with an errors object keyed by field, quota_reached or ping_mismatch; fix the payload and resend. Details: v1 leads endpoint.
To see what arrived, open Entries > Incoming logs (newest first), open the log, then click Post under Records. The post inspector shows:
- Request: the payload as received, including keys that do not map to a field, and Validation errors field by field if the post was rejected.
- Response: what Juiced sent back.
- Details: whether the post was Accepted or Rejected, and the response code (201 or 422).
More in the logs docs.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| 401 Unauthorized | Wrong or old token; a token replaced more than 24 hours ago; a space after Bearer other than the single one, a trailing space or a pasted line break; no Authorization header; Basic auth with the wrong base64 value. | Create a new bearer token and paste it with no extra characters, or check the Basic value is the API Key and API Secret joined by a colon and base64-encoded. Confirm the tool really sends the header. |
| No log entry at all | The tool never sent the request, the URL is wrong, or the tool failed before sending. | Check the tool's own run or webhook history. Confirm the URL matches View API Spec and that test submissions are visible with the Test only filter. |
| 422 validation_failed: zip is required, or other field errors | Keys do not match the field titles, fields are nested inside an object (for example GoHighLevel's standard webhook puts custom fields under customData), the body is form-encoded, or a List of Values field got a value not on its list. | Open Validation errors in the post inspector. Rename keys to match the Field Reference, send flat JSON, and send only listed values. If the tool cannot send flat JSON, use Zapier or Make. |
| 201 with status rejected | Received but not sold: the lead went to Audit or Unassigned. Test mode may still be on, or no buyer matches the lead. | Open the log to see why. Turn test mode off for live leads and check that buyers cover the lead's area and criteria. |
| 201 with status duplicate | Juiced flagged the lead as a duplicate, with a price of 0. | Expected for repeat leads. Open the log for details, and see duplicate lead checking. |
| Cannot create a field | The title contains spaces or other characters that are not allowed. | Use letters, numbers and underscores, for example loan_amount, and send that exact key. |
| Extra fields not saved | The keys are not mapped to any field on the lead category or source. | They appear in Request but are not saved. Add a field with a matching title. |
| Tool reports a timeout | The tool gave up waiting for a reply. | Check Incoming logs before you resend: if the post is there, it was received, and resending sends the same lead twice. If your tool can send a transaction_id, resending the same transaction_id with the same payload returns the original response, so retries are safe. Raise the tool's timeout if it allows. |
| 429 rate_limited | Too many requests in a short time. | Wait for the time in the Retry-After header, then resend. |
Passing a TrustedForm certificate URL or Jornaya LeadiD works like any other field. See TrustedForm and Jornaya.
Frequently asked
What URL do I use to send leads to Juiced?
Send a POST to https://usejuiced.com/api/v1/leads with a JSON body. The exact URL for your source is on its View API Spec page. For ping post, ping https://usejuiced.com/api/v1/ping first, then post the full lead with ping_id set to the ping’s data.id.
Why does Juiced return 401 Unauthorized?
The Authorization header is missing or wrong. Common causes are an old token that expired 24 hours after a new one was created, an extra space or line break around the token, or a wrong base64 value for Basic auth. Create a new token and paste it cleanly.
Why did my lead come back as rejected with a 201?
A 201 with data.status rejected means Juiced received the lead but did not sell it, so it went to Audit or Unassigned. Test mode may be on, or no buyer matched. Open the lead’s entry in Incoming logs to see why.
Can I send form-encoded data or nested JSON to Juiced?
No. Juiced documents only JSON with top-level keys. If your tool can only send form-encoded or nested data, route it through Zapier or Make and post flat JSON from there.
How do I test without sending leads to buyers?
Turn on Test mode on the source and use the test zip codes 00001 to 00005 for fixed results. Find the tests in Incoming logs with the Test only filter, then turn test mode off before going live.
One endpoint, every lead source
Once leads arrive, Juiced routes each one to buyers by bids, caps and criteria, and sends unsold leads to your marketplace.
Scale your lead business, without limits
Juiced puts you in full control of your leads, routing, and revenue, so you can automate, optimize, and grow without chaos.
