oxinion
v1.5.1
Published
Location-based automation SDK — geofences, pipelines, push, email, and webhooks
Maintainers
Readme
oxinion
Location-based marketing automation SDK. Create geofences, build pipelines, register push tokens, and track events — all from client-side JavaScript with no server required.
npm install oxinionQuick start
import { createOxinion } from "oxinion";
const oxinion = createOxinion({ apiKey: "oxk_live_..." });Get your API key from developer.oxinion.com.
Modules
oxinion.geofencing
Create and list location-based triggers.
// Create a geofence
const { geofence } = await oxinion.geofencing.create({
name: "Downtown Store",
lat: 43.6532,
lng: -79.3832,
radius: 200, // meters
triggerType: "enter", // "enter" | "exit" | "dwell"
});
// List all geofences
const { geofences } = await oxinion.geofencing.list();oxinion.pipeline
Pipelines define what happens when a geofence fires.
// Create a pipeline
const { pipeline } = await oxinion.pipeline.create({
name: "Welcome Offer",
geofenceId: geofence.id,
triggerEvent: "enter",
});
// List pipelines
const { pipelines } = await oxinion.pipeline.list();
// Delete a pipeline
await oxinion.pipeline.delete(pipeline.id);oxinion.nodes
Nodes are the action steps inside a pipeline (send email, push notification, webhook call, etc.).
// Add a node to a pipeline
const { node } = await oxinion.nodes.create({
pipelineId: pipeline.id,
type: "notify", // "notify" | "mail" | "webhook"
config: {
title: "You're nearby!",
body: "Stop in for 20% off today.",
},
orderIndex: 0,
});
// List nodes in a pipeline
const { nodes } = await oxinion.nodes.list(pipeline.id);oxinion.hooks
Register webhooks to receive event callbacks.
// Register a webhook
const { webhook } = await oxinion.hooks.register({
url: "https://yourserver.com/webhook",
events: ["geofence.enter", "geofence.exit"],
});
// List webhooks
const { webhooks } = await oxinion.hooks.list();
// Delete a webhook
await oxinion.hooks.delete(webhook.id);oxinion.notify
Register device push tokens to enable push notifications.
await oxinion.notify.registerToken({
userId: "user_123",
token: devicePushToken, // APNs or FCM token
});oxinion.invoke
Make a direct HTTP call to any endpoint. Useful for triggering custom server logic.
const result = await oxinion.invoke.call({
target: "https://yourserver.com/action",
method: "POST",
body: { userId: "user_123", discount: 20 },
});
console.log(result.status); // HTTP status code
console.log(result.response); // parsed JSON responseoxinion.track
Track a location event. Oxinion checks for matching geofences and fires any associated pipelines.
await oxinion.track({
type: "enter", // "enter" | "exit" | "dwell"
lat: 43.6532,
lng: -79.3832,
userId: "user_123", // optional
});oxinion.mail
Note: Direct mail sending is not yet supported. Mail delivery is handled automatically when a pipeline containing a mail node fires. This method is a no-op in the current version.
await oxinion.mail.send({ to: "[email protected]", subject: "Hi", body: "..." });
// Returns { success: true } but does not send an email yet.TypeScript
The SDK ships with full TypeScript types — no @types/oxinion package needed.
import { createOxinion, type OxinionConfig } from "oxinion";License
MIT
