Convoy Functions

Code that runs on request.

Write a handler, point it at a repository, choose how it gets invoked. The platform takes care of building, serving over HTTPS, scaling up under load, and going quiet when nothing's happening. You pay only while it's running.

HTTP
Schedule
Webhook

Idle costs nothing · Per-second billing · Node · Python · Docker

01Runtime & source

Three runtimes. Same simple shape.

Write a handler in Node or Python and we take care of the request plumbing. Need something custom? Drop in a Dockerfile and we run it exactly the way you wrote it.

Node.js 20
JavaScript and TypeScript. Write an exported handler, return a Response.
Python 3.12
Data pipelines, ML inference, webhook processors. Standard library plus pip dependencies.
Docker
Anything else. Bring your own Dockerfile and we run it as-is.
// src/handler.ts
export default
async (req: Request) => {
const body = await req.json();
return Response.json({ ok: true });
}

GitHub repository

One source of truth. Pushes deploy automatically.

Private repos

Install the Convoy GitHub App. No personal tokens to manage.

Handler entry

Point us at the file. We wire up the request lifecycle.

What you don't write
BoilerplateHandled
ContainerBuilt for you
First deployUnder a minute
02Triggers

Three ways in. One handler.

A function can answer HTTP calls, run on a schedule, and process webhooks - all at the same time. Configure up to five triggers in any combination and they all land in the same handler.

HTTP
Public endpoint
Webhook
HMAC validated
Cron
Scheduled
handler
export default
async (req: Request) => {
const body = await req.json();
return Response.json({ ok: true });
}

HTTP

Public HTTPS endpoint with a custom path. TLS handled automatically.

GETPOSTPUTDELETE

Webhook

Signed payloads from Stripe, GitHub, Slack, anything. We verify the signature before your code runs.

HMACSigning key

Schedule

Run on a cron expression or fixed interval. Anything from every minute to once a month.

CronInterval
Custom paths
Route each trigger to its own path
Signing keys
Stored encrypted, rotated anytime
Mix and match
Up to five triggers per function
03Scaling

Idle costs nothing. Bursts cost a few cents.

When traffic stops, every copy of your function goes away and the meter stops. The next request brings them back. Set a floor if you'd rather keep a warm copy running.

0 instancestraffic spike
idlescale upservingscale down
Instance range
0
20
idle floorburst ceiling
Minimum copiesZero, by default
Maximum copiesUp to 20
ConcurrencyTunable per function
Memory128 MB to 1 GB
CPUUp to half a core
TimeoutUp to 5 minutes
04Observability

See every invocation. Alert on anything.

Every call to your function shows up in a live feed with latency, status, and cold-start tags. You get your own Grafana Org with fine-grained metrics, and built-in alerting lets you write precise rules and route them to the channels you already use.

live invocations
streaming
POST/api/parse42ms200
GET/healthz8ms200
POST/webhooks/stripe156ms200
GET/api/parse38ms200
POST/api/upload412ms201
GET/healthz6ms200
Request rate
1.2kreq/min
p50 / p95 latency
42 / 156ms
Error rate
0.02%
Cold starts
3last 5 min
Live feed
Every invocation, in real time
Your Grafana Org
Fine-grained metrics, scoped to you
Built-in alerting
Configurable channels and rules
The full observability suite
Your own Grafana Org with fine-grained metrics, logs, and built-in alerting with configurable channels and rules.
05Operational controls

Runtime safety. Without the overhead.

Configuration changes, workspace isolation, and failure recovery are part of the platform. You don't run runbooks or wire up external tooling to get them.

Hot configuration

Change memory, CPU, timeout, triggers, and environment variables without rebuilding. New values apply on the next invocation.

No rebuild on config change
Concurrency tunable per function

Workspace isolation

Every workspace is fully isolated from every other. HTTPS-only endpoints with automatic TLS, and every lifecycle action is audit-logged for you.

Automatic TLS, end to end
Every action audit-logged

Auto rollback

If a deploy fails health checks, the platform rolls traffic back to your previous good revision automatically. Repeated failures pause auto rollback so you can investigate.

Pauses after repeated failures
One-click manual rollback too
06Deploys

Push to deploy. Roll back anytime.

Push a commit, the platform builds your function, runs it through health checks, and only then cuts traffic over. If something goes wrong, every previous revision is one click away.

feat: add user auth
maina3f1c09
Pushedmain · a3f1c09
BuildingDockerfile · 14s
Pushingregistry.codeship.site
Deployedmy-app.codeship.site
my-app.codeship.site

Live build logs

Watch the build stream in the dashboard as it happens. Same output is available over the API.

Immutable revisions

Every deploy gets its own revision number tied to the commit. Roll back to any previous revision in one click.

Newest wins

Push a hundred times in a row and only the latest commit builds. Older in-flight deploys are cancelled for you.

07Frequently asked questions

Frequently asked questions.

Deploy a function

Write a handler. Push to deploy.

Connect a repository, pick a runtime and a trigger, push. We build it, give you a public endpoint, and scale copies up and down with traffic so you only pay when it runs.

Scale to zero·Per-second billing·Auto scaling