Make
Every Make scenario can end with an HTTP heartbeat. One HTTP module on the success path, one on the error route. Same shape as the n8n and Zapier docs.
Setup
- In your scenario, add a connection variable
AGENTPING_PING_TOKEN. Paste the per-agent ping token from the AgentPing settings page. - At the end of the success path, add an HTTP module configured as below.
- Add an Error handler route on any module that can fail; point it at a second HTTP module with
status=fail.
The success heartbeat
HTTP module configuration:
- URL:
https://eu.ingest.agentping.io/v1/ping - Method:
GET - Query string:
| Key | Value |
|---|---|
key |
{{connection.AGENTPING_PING_TOKEN}} |
agent |
customer-enrichment |
status |
ok |
duration_ms |
{{round((now - executionStart) * 1000)}} |
The dashboard shows the run within a second. For richer payloads, use a POST against /v1/heartbeats with a JSON body assembled from Make expressions.
Capturing cost
If your scenario calls an LLM via Make's OpenAI or Anthropic modules, the response includes usage.prompt_tokens and usage.completion_tokens. Add a "Set variable" module to compute cost:
cost_usd = (1.usage.prompt_tokens / 1000000) * 5.00 + (1.usage.completion_tokens / 1000000) * 15.00
Pipe cost_usd into the heartbeat as a query parameter. See Heartbeats for why heartbeat cost is trusted as-supplied.
The error heartbeat
On any module that can fail, right-click → "Add error handler" → "Resume". Route the error path to a second HTTP module:
- URL:
https://eu.ingest.agentping.io/v1/ping - Method:
GET - Query string:
| Key | Value |
|---|---|
key |
{{connection.AGENTPING_PING_TOKEN}} |
agent |
customer-enrichment |
status |
fail |
metadata |
{{1.error.message}} |
Two modules, same agent slug, opposite outcomes.
Schedule monitoring
If the scenario runs on a Make schedule (every 15 minutes, daily at 3am, etc.), set the same cron on the agent in the dashboard. Pulse pages you when an expected fire is missed; Make doesn't notify you when a scheduled scenario fails to start.
Idempotency
For long scenarios with retries, include Make's execution ID as the run ID so retries are deduplicated:
id = run_eu_{{ replace(executionId, "-", "") }}
Heartbeat retries with the same id and matching fields are 200 no-ops. See Identifiers.