Vercel CRM: what to use for customers of an app on Vercel
Vercel has no CRM of its own. What to run on it, how to send its deploys to your own tools, and how to tell your customers what shipped.
The short answer
Vercel hosts and deploys your app and does not keep your customers, so a Vercel CRM can be one of three things: a CRM you deploy on Vercel, a CRM or tool you connect to your deploys, or a way to follow up with the people using what you deployed. The first is an ordinary project to deploy, and building one with Next.js or running an open-source one has a page of its own. This page covers the other two.
Kicklace is for the third. It is not a CRM: it does the follow-up a CRM is bought for, without the CRM, and it hears your Vercel deploys so each email can say what shipped.
Send your deploys to your own tools
Vercel calls a URL of yours when a deploy finishes. As of 28 October 2026 its docs put account webhooks on the Pro and Enterprise plans: under your team's Settings, open Webhooks, choose Deployment Succeeded, enter your address and keep the secret it shows once. Each request carries an x-vercel-signature header, which is an HMAC SHA1 of the raw body keyed with that secret. In a Next.js app, a Route Handler that checks it:
// app/api/vercel/route.ts
import { createHmac, timingSafeEqual } from "node:crypto";
export async function POST(req: Request) {
const body = await req.text();
const secret = process.env.VERCEL_WEBHOOK_SECRET!;
const expected = createHmac("sha1", secret).update(body).digest("hex");
const given = req.headers.get("x-vercel-signature") ?? "";
const same =
given.length === expected.length &&
timingSafeEqual(Buffer.from(given), Buffer.from(expected));
if (!same) return new Response("bad signature", { status: 403 });
const event = JSON.parse(body);
if (event.type === "deployment.succeeded" && event.payload.target === "production") {
// Write it where you keep your customers: a CRM's API, a table, a note.
}
return new Response("ok");
}
Vercel tries again for up to 24 hours when it does not get a 2xx back, so answer quickly and treat a repeat as normal. A preview deploy has another target, which is why the handler looks for production.
Or let Kicklace hear them
- In Kicklace, open Connections → Vercel and press Add Kicklace in Vercel. Vercel asks which of your projects Kicklace may reach.
- Pick them and come back. Kicklace writes four variables into each project (a server key, a public key and two addresses), allows your production domains, and makes the deployments webhook itself. Redeploy each project once.
- Every production deploy is now a release, named after its commit. Where GitHub is connected, a release also carries the pull requests its commits name.
Each event can also say which deploy it happened on, so you can ask which customers met which release. The package reads VERCEL_GIT_COMMIT_SHA on your server and <KicklaceTag /> reads NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA, and Vercel's own setting for system environment variables has to be on for them to exist.
The emails come next: a Product updates list can send on a schedule, and its email can carry a variable that fills itself from your deploys, one dated line each. You read it before it goes, and a week with nothing deployed sends nothing. Changelog email: turn your Vercel deploys into a product update has the steps, and Deployments from Vercel has every detail.
Nothing is sent because you deployed, and Kicklace only reads from Vercel. It never starts, stops or promotes anything of yours.
What Kicklace leaves to a real CRM
Kicklace has no deals and no pipeline, and it is not for a sales team that works from one, or for a marketer who wants a drag-and-drop newsletter builder. Vercel has no webhook for visitors, so the visits come from Kicklace's own tag.
FAQ
Does Vercel have a CRM?
No, Vercel hosts and deploys apps and does not make a CRM. What it offers for connecting one is webhooks for deploys and project events, and integrations such as Kicklace.
Does every deploy send an email?
No, only the list's scheduled email goes out, and a week with nothing deployed sends nothing.
What does it cost?
Kicklace is free up to 1,000 contacts, sending from its own address with your name on it and a small “Sent with Kicklace” line under each email. Your own domain is part of Starter, $25 a month. The details are on pricing.
Free up to 1,000 contacts.
Join the journey
We're building Kicklace so you can get back to building your own product. We'll email you when there's something new worth showing.