Recurring Webinar Created
This event is triggered when a recurring webinar series is created or updated. It provides comprehensive information about the webinar series, including all scheduled sessions and participant details.
Event Type
webinar.created.recurring
Trigger for the following events:
- When a new recurring webinar series is being created
- When an existing recurring webinar series details are updated
Setting Up the Webhook
To subscribe to this webhook event, configure your webhook endpoint with the following:
- cURL
- JavaScript
- Python
curl -X 'POST' \
'https://api-prod-new.tagmango.com/api/v1/integration/webhook/webhook' \
-H 'accept: application/json' \
-H 'x-api-key: <Your API Key>' \
-H 'Content-Type: application/json' \
-d '{
"hookUrl": "<your webhook url>",
"event": "webinar.created.recurring",
"webinar": "<webinar to be associated> (optional sends all webinar related events if not specified)"
}'
fetch('https://api-prod-new.tagmango.com/api/v1/integration/webhook/webhook', {
method: 'POST',
headers: {
'accept': 'application/json',
'Content-Type': 'application/json',
'x-api-key': '<Your API Key>'
},
body: JSON.stringify({
"hookUrl": "<your webhook url>",
"event": "webinar.created.recurring",
"webinar": "<webinar to be associated> (optional sends all webinar related events if not specified)"
})
})
.then(response => response.json())
.then(data => console.log(data));
import requests
import json
url = "https://api-prod-new.tagmango.com/api/v1/integration/webhook/webhook"
headers = {
"accept": "application/json",
"Content-Type": "application/json",
"x-api-key": "<Your API Key>"
}
data = {
"hookUrl": "<your webhook url>",
"event": "webinar.created.recurring",
"webinar": "<webinar to be associated> (optional sends all webinar related events if not specified)"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
hookUrl | string | Yes | Your webhook endpoint URL |
event | string | Yes | Must be `webinar.created.recurring` |
webinar | string | No | Specific webinar ID to monitor. If not specified, receives events for all webinars |
Webhook Payload
When any of the mentioned event is being triggered, TagMango will send a POST request to your webhook URL with the following payload:
Example
{
"name": "John Doe",
"email": "john@example.com",
"phone": 1234567890,
"timezone": "+05:30",
"callList": [
{
"webinar": "Introduction to Digital Marketing",
"webinarId": "634fc35ddaf58580e2418c40",
"webinarLink": "https://meet.google.com/abc-defg-hij",
"webinarFromTime": "2024-03-15T10:00:00.000Z",
"webinarToTime": "2024-03-15T11:00:00.000Z",
"webinarFromTimeInCreatorTimezone": "2024-03-15T15:30:00.000Z",
"webinarToTimeInCreatorTimezone": "2024-03-15T16:30:00.000Z",
"creatorTimezone": "+05:30"
}
],
"mangoes": "mango1, mango2, mango3"
}
Schema
string
string
number
string | null
array
string
The payload includes timestamps in both the attendee's and creator's timezones to help you:
- Display correct times to different users
- Handle timezone conversions automatically
For recurring webinars, the callList
array contains multiple webinar sessions representing the entire series. Each session will have its own timing.
When a webinar targets a large number of subscribers, TagMango will trigger separate webhook calls for each participant. For example, if 1000 users register for a webinar, you'll receive 1000 individual webhook requests, each containing that specific participant's details.
Important considerations:
- Ensure your webhook endpoint can handle high request volumes
- Implement proper rate limiting and queuing mechanisms
Handling the Webhook
Your webhook endpoint should:
- Respond with 200 status - Return a 200 HTTP status code to acknowledge receipt
- Process quickly - Respond within 30 seconds to avoid timeouts
- Implement idempotency - Handle duplicate events gracefully
- Verify authenticity - Validate the request using the provided authentication headers
Example Implementation
// Node.js Express example
app.post("/webhook", (req, res) => {
const payload = req.body;
// Verify the webhook authenticity (implement based on your security setup)
if (!verifyWebhook(req)) {
return res.status(401).send("Unauthorized");
}
// Process the webhook event
try {
console.log("Event data:", JSON.stringify(payload, null, 2));
// Your business logic here
// Process the event data according to your application needs
processWebhookEvent(eventType, payload);
} catch (error) {
console.error("Error processing webhook:", error);
// You might want to return 500 here depending on your retry policy
}
// Acknowledge receipt
res.status(200).send("OK");
});
function processWebhookEvent(eventType, payload) {
// Implement your custom logic based on the event type and payload
// This is where you'll handle the webhook data according to your business requirements
// Examples of what you might do:
// - Store event data in your database
// - Send notifications to users
// - Update user records
// - Trigger automated workflows
// - Sync data with external systems
console.log(`Processing ${eventType} event for your application`);
}