What are Webhooks?
Webhooks are HTTP callbacks that allow external services to send data directly to GoBlue in real-time. When something happens in another application (like a form submission, new lead, or CRM update), that service can immediately notify GoBlue by sending data to your webhook URL. Think of webhooks as a doorbell - when someone rings it (sends data), GoBlue answers by processing that data and potentially sending a message.How Webhooks Work in GoBlue
1
External Event Occurs
Something happens in your external system:
- Website form is submitted
- New lead is created in CRM
- Customer makes a purchase
- Appointment is scheduled
2
Data is Sent
The external service sends an HTTP POST request to your GoBlue webhook URL with relevant data.
3
GoBlue Processes Data
GoBlue receives the data, validates it against your form configuration, and prepares a personalized message.
4
Message is Queued
The message is queued for sending and will be delivered when you run the corresponding iOS Shortcut.
Webhook URL Format
Each GoBlue form has a unique webhook URL:URL Components
- Protocol: Always HTTPS for security
- Domain:
api.goblue.app- GoBlue’s API server - Path:
/v1/forms/{form-id}/webhook- Specific to your form - Form ID: UUID that uniquely identifies your form
Required Request Format
HTTP Method
All webhook requests must use the POST method.Headers
Include these headers in your webhook requests:Request Body
Send data as JSON in the request body:Data Requirements
Required Fields
phoneNumber
Required: Yes
Format: Any standard phone number format
Examples: +1234567890, (123) 456-7890, 123-456-7890
Format: Any standard phone number format
Examples: +1234567890, (123) 456-7890, 123-456-7890
Optional Fields
The following fields are commonly used but optional:firstName
firstName
Used for personalizing messages with
Example: “John”
{{firstName}} variables.Type: StringExample: “John”
lastName
lastName
Used for personalizing messages with
Example: “Doe”
{{lastName}} variables.Type: StringExample: “Doe”
Custom Fields
Custom Fields
Any additional fields you’ve configured in your form:
Webhook Security
HTTPS Only
GoBlue webhook URLs use HTTPS encryption to protect data in transit.Form ID Authentication
The form ID in the URL acts as an authentication token - only requests to the correct URL will be processed.Data Validation
GoBlue validates incoming data structure and rejects malformed requests.Rate Limiting
Webhook endpoints are rate-limited to prevent abuse:- 100 requests per minute per form
- 429 status code returned if limit exceeded
Common Integration Patterns
Website Contact Forms
HTML Form Example:CRM Integration
Salesforce Example:Zapier Integration
Zapier automatically formats webhook requests correctly. Simply:- Set the webhook URL as your Zapier action endpoint
- Map your trigger fields to GoBlue fields
- Zapier handles the JSON formatting and HTTP request
Zapier Integration Guide
Detailed setup instructions for Zapier workflows
Testing Webhooks
Using cURL
Test your webhook endpoint with cURL:Using Postman
- Create a new POST request
- Set URL to your webhook endpoint
- Add
Content-Type: application/jsonheader - Add JSON test data in the body
- Send the request
Expected Response
Successful webhook requests return:Error Handling
Common Error Responses
400 Bad Request
400 Bad Request
Cause: Invalid JSON format or missing required fieldsResponse:
404 Not Found
404 Not Found
Cause: Invalid form ID in the webhook URLResponse:
429 Too Many Requests
429 Too Many Requests
Cause: Rate limit exceeded (>100 requests/minute)Response:
503 Service Unavailable
503 Service Unavailable
Retry Logic
Implement retry logic in your webhook sending code:Monitoring Webhooks
View Incoming Data
Check the GoBlue app to monitor webhook activity:- Open the Contacts tab to see new submissions
- Check the Messages tab to see queued messages
- Review form settings to ensure capturing is enabled
Logging Best Practices
In your external systems, log webhook attempts:Troubleshooting
Webhook Not Receiving Data
1
Verify URL
Double-check that you’re using the correct webhook URL with the right form ID.
2
Check Form Status
Ensure “Enable capturing” is turned on in your form settings.
3
Validate JSON
Use a JSON validator to ensure your payload is properly formatted.
4
Test with cURL
Use the cURL example above to test the endpoint directly.
Messages Not Generated
1
Check Required Fields
Verify that your webhook data includes a valid
phoneNumber field.2
Review Form Configuration
Ensure your form has a message template configured.
3
Verify Auto Follow-up
Check that “Auto Follow-up” is enabled in your form settings.
Best Practices
Use HTTPS
Always use secure HTTPS URLs for webhook endpoints
Validate Data
Validate data in your source system before sending
Handle Errors
Implement proper error handling and retry logic
Monitor Usage
Track webhook success rates and response times