Import User Segments
To recruit only specific users, user segments can be imported from CSV. Note that for in-app recruitment, the Client SDK must implement identify()
with data that matches the CSV, in order to determine whether to target a specific user or not.
Which CSV column names / headers should I use?
We recommend including the following column headers: name
, email
, userId
, and greetingName
.
But, at a minimum, we require only an email
or userId
(both unique per user within Orbital).
Here's an example of the recommended CSV attributes:
email,userId,name,greetingName
john@doe.com,806510ed-f6ff-48a4-926e-1ed3045b1741,John Doe,john
jane@smith.com,4360b2ac-19b8-49f4-862e-bfe18e6c411f,Jane Smith,Jane
jeremy@dune.com,c07c0b9a-9534-4e29-be98-d0dd01df601e, Jeremy Dune,Jeremy
…
For in-app recruitment...
In order to determine whether a user should be recruited for an active discovery, the Client SDK must identify the user's userId
or email
against the segment inclusion criteria. At least one of these attributes must be provided in the CSV.
userId
is the user's unique user ID (eg. from your own user database)email
is only used to identify a user (if they enter a different email for scheduling, they'll receive the calendar invite to that other email)
For email recruitment...
The email
attribute is always required, but we also encourage you to at least include a greetingName
so that you can personalize the emails.
Are any attributes unique?
Yes, email
and userId
are both considered unique per user.
That means when uploading user segments with users already in Orbital, you will have the option of updating or skipping those records.
What happens if I upload the same user in multiple segments?
No problem! We will merge them based on their email
or userId
, and it will be a single user record that is part of both segments.
Can I skip existing users when importing?
Yes.
Can I add more users to existing segment?
Yes.
Why does my uploaded segment have less users than rows in my CSV?
Orbital validates each row during upload and skips/ignores rows with invalid data (eg. email provided is not a valid email)
Further Examples
- At a minimum, Orbital needs a single unique attribute provided per user:
userId
806510ed-f6ff-48a4-926e-1ed3045b1741
4360b2ac-19b8-49f4-862e-bfe18e6c411f
c07c0b9a-9534-4e29-be98-d0dd01df601e
…
which in turn can be used by the Client:
orbital('identify', '806510ed-f6ff-48a4-926e-1ed3045b1741')
- Alternatively, if you would rather use email to identify users:
email
john@doe.com
jane@smith.com
jeremy@dune.com
…
which in turn can be used by the Client:
orbital('identify', null, { email: 'john@doe.com' })
- But you can also include as many attributes as you want:
email,userId,name,greetingName
john@doe.com,806510ed-f6ff-48a4-926e-1ed3045b1741,John Doe,john
jane@smith.com,4360b2ac-19b8-49f4-862e-bfe18e6c411f,Jane Smith,Jane
jeremy@dune.com,c07c0b9a-9534-4e29-be98-d0dd01df601e, Jeremy Dune,Jeremy
…
which in turn can be used by the Client:
orbital('identify', '806510ed-f6ff-48a4-926e-1ed3045b1741', { email: 'john@doe.com' })
Please refer to the Client SDK docs for further information on client instrumentation.