HubSpot, Zapier, Make and Segment
Connect other CRMs, automation tools and customer data platforms.
Available on: Growth, Scale or an active trial
Any tool that can send an HTTP POST with a JSON body can talk to Atlis. Send users to /api/v1/identify and events to /api/v1/events, using the fields in Server API.
Zapier, Make, n8n
- Add an HTTP action: Webhooks by Zapier → POST in Zapier, or the HTTP → Make a request module in Make.
- URL:
https://theatlis.com/api/v1/identify(or/api/v1/events). Method: POST. Payload type: JSON. - Header:
Authorization=Bearer atlis_sk_YOUR_KEY. - Map your fields to
userId,email,name(andeventNamefor events).
HubSpot
HubSpot's standard webhook action sends HubSpot's own field names, so use a Custom code action in a HubSpot workflow instead. Custom code actions need a HubSpot plan that includes them (Operations Hub Professional or higher).
// HubSpot workflow → "Custom code" action (Node.js)
// Add a secret named ATLIS_API_KEY, and add email and firstname as properties to include.
exports.main = async (event, callback) => {
const email = event.inputFields["email"];
const res = await fetch("https://theatlis.com/api/v1/identify", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.ATLIS_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
userId: email,
email,
name: event.inputFields["firstname"],
}),
});
callback({ outputFields: { atlisStatus: res.status } });
};Segment and RudderStack
Segment and RudderStack send their own event format, which Atlis doesn't read directly. Use a Segment Destination Function (or a RudderStack transformation) to convert it. This one forwards identify and track calls and converts event names like Trial Started to trial_started.
// Segment Destination Function (or a RudderStack transformation with the same logic)
// Create a setting named apiKey and paste your Atlis API key into it.
const toTrigger = (name) =>
String(name).trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
async function send(path, body, settings) {
const res = await fetch("https://theatlis.com/api/v1/" + path, {
method: "POST",
headers: {
"Authorization": "Bearer " + settings.apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
if (res.status >= 500) throw new RetryError("Atlis error " + res.status);
}
async function onIdentify(event, settings) {
if (!event.userId) return;
const traits = event.traits || {};
await send("identify", {
userId: event.userId,
email: traits.email,
name: traits.name,
plan: traits.plan,
properties: traits,
}, settings);
}
async function onTrack(event, settings) {
if (!event.userId) return;
await send("events", {
userId: event.userId,
eventName: toTrigger(event.event),
messageId: event.messageId,
properties: event.properties || {},
}, settings);
}More in Server API & CRM
Try it in your own workspace
Start with a 14-day trial with Growth features. No credit card needed.
Start free