Vero Developer Guide

Last updated: 3 August 2023


Vero platform overview

Vero is a customer engagement platform for product and product marketing teams at B2C and product-led B2B businesses. Vero works best for post-signup use cases where you have a solid, clear "identifier" for the users of your software.

We currently offer two versions of our software:

  • Vero Cloud. A traditional SaaS product. Send Vero data about your users and their actions ("events") using our Track REST API. We store this data on your behalf in our cloud (the "Vero data store" in the diagram above) and enable you to create segments and workflows using this data in the Vero Cloud UI. Works with Rudderstack, Segment, Hightouch, Census and other integrations.
  • Vero Connect. A "warehouse-native" version of Vero. Vero Connect does not store any of your user or user activity ("event") data. Instead, audiences are loaded on-demand from your data warehouse (e.g. Snowflake, Redshift, etc.) The Vero Connect UI enables you to create campaigns using these audiences.

The Track REST API is used only with Vero Cloud. The Application REST API is designed to work with both versions of Vero.

We want your feedback! The Application REST API is currently in preview and we want your feedback. Whilst is not available for public use (there is no authentication mechanism) we would love to hear how you will use it when released. Send your feedback to

Platform Core Concepts

Vero's API is built around these core concepts.


A User represents a user of your product. Vero is best suited to post-signup use cases where you have a unique, database identifier for each of your users.

You can use Vero for pre-signup use cases. Users can be tracked into Vero with an email address and no id, enabling you to alias and update a user's id once they signup. Similarly you can generate random, unique id values for non-signed sessions and alias these once a user logs in.


An Event represents an action taken by a User at a specific point in time. Examples of common events include Signed up, Clicked Button, Campaign Created, Order Completed. Events represent the historical log of everything a user has done. Events typically relate to a User and some other object, e.g. an Order, a Campaign, etc.


A Campaign links three things together:

  1. A Trigger.
  2. An Audience.
  3. A Message.
  • Triggers include a single, scheduled time, a recurring schedule and event triggers.
  • You don't need a Campaign to send a Message. You can send a Message directly via the API if you'd like to.
  • Reports are only aggregated for Campaigns. We record all the opens/clicks/etc. for every Delivery and Message record but Campaigns are a way of reporting on a group of Messages together.


A Trigger defines how a Campaign is initiated. Trigger types include:

  • immediate which sends the campaign as soon as it is launched.
  • scheduled which runs at a specific time.
  • recurring which runs on a cron schedule.

We're building our new triggers such as api, event and more.


An Audience represents a list of one or more users.


A Message represents a templated version of what will be sent to an Audience. A Message is designed to be multi-channel and contains an array of Content objects: one for each channel the message may be sent to. Vero currently supports email, push Content and we are working to add sms and http.


The Content object includes all of the fields required to successfully deliver a message on a specific channel. For example, email always requires a to, subject and body field.


Official SDKs

Vero has written official SDKs for the following languages. The Github repository for each library contains more information on setup and use.

Community supported SDKs

We don't guarantee that all community-supported libraries are maintained and up to date. A big shout out to all of our customers who have contributed libraries they've written! Thank you.

Vero's customers have written and shared a variety of libraries for the following languages. Clicking the links below will take you to the Github repository for that library where you will find more detailed information on setup and usage.

Javascript SDK

Initializing the SDK

Before you can use any of the functions available in the Vero Javascript SDK, you must first initialize the SDK. To do so, place the following Javascript on your website, typically in the <head> section of your HTML. We recommend including this on every page.

Insert an active Vero API key. You can manage your API keys under Settings in your Vero Cloud account.

var _veroq = _veroq || [];
_veroq.push(['init', { api_key: 'INSERT_API_KEY'} ]);

(function() {var ve = document.createElement('script'); ve.type = 'text/javascript'; ve.async = true; ve.src = '//'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ve, s);})();

Adding or updating a User

When adding a User using the Javascript SDK either an id or email value are required. All other attributes are optional and customizable. In this example we're passing a value for the first_name, last_name and subscription properties.

    id: "123",
    email: "",
    first_name: "Damien",
    last_name: "Brzoska",
    subscription: "medium",

Tracking an Event (user action)

When tracking an Event using the Javascript library you do not need to pass an identity hash as outlined in the Track REST API. Instead, you must make a call to the identify SDK method outlined above. A cookie is then stored and this identity is used by the SDK to form the full API request for you.

  "viewed product",
    product_name: "Red T-shirt",
    product_url: "",

When tracking an Event, the Javascript SDK supports passing the optional extras object as outlined in the Track REST API.

  "viewed product",
    product_name: "Red T-shirt",
    product_url: "",
    source: "My application",
    created_at: "2024-08-01 10:05",

Aliasing/merging a User

The alias method is used to merge two user identities, merging two sets of user data into one. This is an advanced method and may have unintended consequences. Please get in touch if you have questions regarding its usage

  'reidentify', {
  '456', // The new user ID
  '123'// The old user ID

Adding and removing tags on a User

Whilst tags are a first-class citizen in Vero we do eventually envision sunsetting them in favour of basic user attributes. For new use cases we encourage you to simply update a user attribute rather than use a tag.
    id: "123",
    add: ["prospect"],
    remove: ["customer"],

Unsubscibing and resubscribing a User

To unsubscribe or resubscribe a user, supply the User's id. In this example, 123 is the id.

_veroq.push(["unsubscribe", "123"]);
_veroq.push(["resubscribe", "123"]);

Deleting a User

Users can't be deleted via the Javascript SDK at this time.

Ruby, PHP and others

Refer to the respective SDK Github repositories (see SDKs above) for how-tos on using the Ruby, PHP and community-supported SDKs.


Read more on how to setup Vero's webhooks.

Webhooks can be configured in the Vero Cloud UI. To configure webhooks in Vero Connect, please email support via

Configuring Delivery Providers

You can configure Vero to send your email and push messages via multiple providers.


By default Vero will send emails using a shared domain and shared IP addresses. You can configure a custom domain so that your emails are signed by You can also configure Vero to send emails via your own account with Sendgrid, Mailgun, Mailjet and more. Read more on configuring a custom email domain.

iOS and Android Push

To send iOS and Android push messages you must configure your application to handle incoming push messages. Vero does not currently provide an iOS or Android SDK but does provide an explanation and examples of the minimum code required to handle push messages. Read more in our Push Notification Integration Guide.