Personyze Wiki Personyze Wiki docs
Nederlands
  • English
  • Español
  • Français
  • Deutsch
  • Italiano
  • Nederlands
  • Português
  • Polski
  • 日本語
  • العربية
Open Personyze
Docs/ Developers/ REST API: naslag van objecten
Developers

REST API: naslag van objecten

Naslag voor elk object van de REST API van Personyze: doel, ondersteunde HTTP-methoden, kolommen met opmerkingen over indexering, en voorbeelden.

23 min read Updated 2 hours ago

Naslag voor elk object dat de REST API van Personyze beschikbaar stelt. Elk onderdeel hieronder behandelt één object: het doel, de ondersteunde HTTP-methoden, de kolommen (met type en opmerkingen over indexering), en curl -voorbeelden die klaar zijn om te kopiëren.

Vereisten — lees deze eerst als je dat nog niet hebt gedaan:

Objectenindex

Klik op een object om naar het onderdeel te springen. Elk onderdeel heeft een eigen anker-URL — je kunt direct naar de naslag van elk object linken.

CRUD-content (lezen/schrijven)

Bevat je campagnes, doelgroep, catalogus en configuratie. Volledige CRUD voor External API user en hoger.

usersKlantprofielen. Kolomnamen zijn dynamisch.
user_listsBenoemde lijsten met gebruikers (handmatig of geïmporteerd).
user_list_usersLidmaatschap van gebruikers in user_lists.
actionsPersonalisatieacties. Via REST op dit moment alleen-lezen.
conditionsDoelgroepvoorwaarden. Via REST op dit moment alleen-lezen.
placeholdersDOM-placeholdercontainers (waar acties worden weergegeven).
containers_grab_variableDOM-/JS-waarden terughalen naar het bezoekersprofiel.
productsRijen van de productcatalogus. Kolomnamen zijn dynamisch.
articlesRijen van de artikelcatalogus. Kolomnamen zijn dynamisch.

Interacties / events (vooral schrijven)

Logboeken van bezoekersinteracties waaraan alleen wordt toegevoegd. Vooral gebruikt door SDK’s en integraties aan de backend.

products_interactionsEvents voor bekijken / winkelwagen / aankoop bij producten.
eventsAlgemeen eventlogboek (alleen-lezen).
formsLogboek van formulierinzendingen (alleen-lezen).
doVerdeler voor commando’s die je afvuurt en vergeet.

Rapporten / archief (alleen-lezen)

sessions_archiveEén rij per bezoekerssessie, met metadata over locatie/apparaat/browser.
user_interestsAfgeleide interesses, categorieën en tags per gebruiker.
products_stats_*Interactietellers per product over zes doorlopende vensters.
summary_actionsDagelijks geaggregeerde KPI per actie.

Hulpmiddelen voor tracker / SDK

Gebruikt door de JS-tracker, native SDK’s en integraties om zichzelf op te starten. Meestal niet direct aangeroepen door gebruikers van de REST API.

tracker_codeGeeft het JS-snippet terug om in een klantpagina in te sluiten (HTML-uitvoer).

users

Klantprofielen. Elke rij is één bezoeker of klant. Kolomnamen zijn dynamisch — naast de gedocumenteerde huishoudelijke kolommen kun je alle eigen sleutels/waarden opslaan die je account nodig heeft.

GET POST PUT DELETE

Identificerende / huishoudelijke kolommen

Kolom Opmerkingen
user_id Interne primaire sleutel van Personyze. Automatisch toegekend bij het invoegen. Geïndexeerd.
internal_id Je externe identificator (CRM-ID, account-ID, SKU). Geïndexeerd.
fb_id Facebook-gebruikers-ID. Geïndexeerd.
email E-mailadres van de bezoeker. Geïndexeerd.
last_session_time Unix-seconden. Geïndexeerd.
data_last_modified Unix-seconden. Geïndexeerd.
session_counter Totaal aantal sessies dat tot nu toe voor deze gebruiker is gezien.

Veelgebruikte profielvelden (eigen)

first_name, middle_name, last_name, sex, birthday, timezone, current_city, current_state, current_country, religion, political, interests, relationship_status, education_year, plus custom_t_1custom_t_6 (tekst), custom_i_1custom_i_4 (geheel getal), custom_f_1custom_f_2 (kommagetal), custom_d_1, custom_d_2 (datum) — en alle extra velden die je op je account hebt ingesteld.

Voorbeelden

# Lookup by your external id
curl 'https://api:KEY@app.personyze.com/rest/users/where/internal_id=42'
# Recent active visitors (last 7 days)
curl 'https://api:KEY@app.personyze.com/rest/users
        /where/last_session_time>1730000000
        /columns/user_id,internal_id,email,first_name,last_session_time
        /order_by_desc/last_session_time
        /limit/1000'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/users' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"acct-987","email":"alice@example.com","first_name":"Alice","custom_field_x":"vip"}'
# → 5712334  (new user_id)
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/users/where/internal_id=acct-987' \
     -H 'Content-Type: application/json' \
     -d '{"first_name":"Alicia"}'
# → 1  (rows affected)

Geïndexeerde kolommen / scanlimieten

GET /rest/users zonder where vereist order_by op een geïndexeerde kolom — user_id, last_session_time, data_last_modified, fb_id, email, of internal_id. Anders: 400 Cannot do this operation on whole table.

Snelheidsbeperking

POST /rest/users wordt per Personyze-account geserialiseerd: hooguit één lopende insert tegelijk. Verzoeken die langer dan 1 seconde wachten, worden geweigerd met 400 Too many simultaneous requests — probeer opnieuw met exponentiële backoff.

user_lists

Benoemde lijsten met gebruikers (bijv. “VIP’s”, “Aanmeldingen voor de nieuwsbrief”). Eén rij per lijst. Het lidmaatschap staat in een apart object — zie user_list_users.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel. Automatisch toegekend.
name Weergavenaam van de lijst. Geïndexeerd.

Voorbeelden

# All lists
curl 'https://api:KEY@app.personyze.com/rest/user_lists'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_lists' \
     -H 'Content-Type: application/json' \
     -d '{"name":"VIPs"}'
# → 17
# Rename
curl -X PUT 'https://api:KEY@app.personyze.com/rest/user_lists/17' \
     -H 'Content-Type: application/json' \
     -d '{"name":"VIP customers"}'
# → 1
# Delete (also clears all memberships in user_list_users via FK cascade)
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/user_lists/17'
# → 1

user_list_users

Lidmaatschap: welke gebruikers bij welke user_listshoren. Eén rij per (user_list_id, user_id) -paar.

GET POST PUT DELETE

POST accepteert een bestaande user_id, of een opzoeksleutel (user_internal_id, user_email) — de API zet die om naar een user_id, en maakt zo nodig een tijdelijke users -rij aan.

Kolommen

Kolom Opmerkingen
user_list_id FK → user_lists.id. Deel van de samengestelde sleutel.
user_id FK → users.user_id. Deel van de samengestelde sleutel.

Extra’s in de POST-body (omgezet naar user_id aan de serverkant, en daarna weggelaten)

Veld Wordt omgezet naar
user_internal_id user_id voor de gebruiker met die internal_id. Maakt de gebruiker aan als die ontbreekt.
user_email user_id voor de gebruiker met die email. Maakt de gebruiker aan als die ontbreekt.

Voorbeelden

# Members of list 17
curl 'https://api:KEY@app.personyze.com/rest/user_list_users/where/user_list_id=17/limit/1000'
# Add by user_id
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_id":5712334}' 
# Add by external id (auto-creates a users row if needed)
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_internal_id":"acct-987"}' 
# Add by email
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_email":"alice@example.com"}' 
# Remove
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/user_list_users
        /where/user_list_id=17&user_id=5712334'

actions

Personalisatieacties — wat je campagnes doen: HTML weergeven, een pop-up tonen, een e-mail versturen, een melding pushen, enz. Via REST op dit moment alleen-lezen (maken/bewerken via de interface).

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
version_tag production of testing.
name Weergavenaam van de actie.
type_id Het actietype (HTML / pop-up / e-mail / push / …). Afgeleid van het onderliggende action_js_id.
placeholders JSON-array met ID’s van de placeholders waarop de actie is gericht.
content_type Mime-type / soort content (uit actions_js).
content_param Naam van de sleutel van de JS-parameter waarvan de waarde de weer te geven content is.
content_begin Berekend: openingsfragment van de weergegeven content (na vervanging van de wrapper).
content_end Berekend: afsluitend fragment.
presenting_rules JSON: regels voor timing / frequentie.
libs_app App-bibliotheken waarvan de actie afhangt.

Voorbeelden

# All production actions
curl 'https://api:KEY@app.personyze.com/rest/actions
        /where/version_tag=production
        /columns/id,name,type_id,placeholders'
# One action's full content
curl 'https://api:KEY@app.personyze.com/rest/actions/where/id=42
        /columns/id,name,content_type,content_param,content_begin,content_end'

conditions

Doelgroepvoorwaarden — het wanneer van campagnes. Via REST alleen-lezen.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
name Weergavenaam van de voorwaarde.

Voorbeelden

# All tracker/offline conditions
curl 'https://api:KEY@app.personyze.com/rest/conditions/limit/1000'

placeholders

Containers van het type placeholder — DOM-plekken waar acties content weergeven. Beheer de catalogus met placeholders die voor je site zijn gedefinieerd.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
name Weergavenaam.
html_id DOM-selector / id waar de placeholder wordt ingevoegd.
units_count_max Maximaal aantal actie-eenheden dat deze placeholder kan vullen. Standaard 1.

Voorbeelden

# All placeholders
curl 'https://api:KEY@app.personyze.com/rest/placeholders'
# One
curl 'https://api:KEY@app.personyze.com/rest/placeholders/14'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/placeholders' \
     -H 'Content-Type: application/json' \
     -d '{"name":"Hero banner","html_id":"#hero","units_count_max":1}'
# → 88
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/placeholders/88' \
     -H 'Content-Type: application/json' \
     -d '{"units_count_max":3}'
# → 1
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/placeholders/88'
# → 1

Bereik van het endpoint.De handler beperkt alle query’s tot container_types='placeholder', dus andere containertypen (bijv. “grab variable”) zijn vanaf dit endpoint niet zichtbaar — zie containers_grab_variable.

containers_grab_variable

Containers van het type “grab variable” — halen DOM-/JS-waarden van de pagina van de bezoeker terug naar het bezoekersprofiel. Elke container zegt “houd deze variabele / dit DOM-element in de gaten; verschijnt die, leg die dan vast als profielveld.”

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
name Weergavenaam.
is_active 1 / 0.
variable_path DOM-pad of JS-expressie om op te halen.
mask Optionele regex/template die op de opgehaalde tekenreeks wordt toegepast.
constant_value Optionele terugval- / geforceerde waarde.
watch_variable Opnieuw ophalen zodra de variabele verandert (1 / 0).
profile_column Profielkolom waarnaar de waarde wordt geschreven.

Voorbeelden

# All grab-variable containers
curl 'https://api:KEY@app.personyze.com/rest/containers_grab_variable'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/containers_grab_variable' \
     -H 'Content-Type: application/json' \
     -d '{"name":"Cart total",
          "variable_path":"window.dataLayer[0].cart.total",
          "mask":"^([0-9.]+)$",
          "watch_variable":1}'
# → 153
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/containers_grab_variable/153' \
     -H 'Content-Type: application/json' \
     -d '{"is_active":0}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/containers_grab_variable/153'

products

Productcatalogus. Elke rij is één SKU. Kolomnamen zijn dynamisch — naast de gedocumenteerde huishoudelijke kolommen kun je alle eigen velden opslaan die je catalogus nodig heeft.

GET POST PUT DELETE

Identificerende / huishoudelijke kolommen

Kolom Opmerkingen
id Primaire sleutel. Automatisch toegekend.
internal_id Je SKU / externe identificator.
data_last_modified Unix-seconden.
is_in_stock 'yes' / 'no' -enum (niet 1/0).

Veelgebruikte productvelden (eigen)

title, description_short, description_long, price, sale_price, image_big_url, image_medium_url, image_small_url, cart_url, brand, manufacturer, category, inventory, expiration_date, size, color, rank, is_new, age_from, age_to, available_location, not_available_location, enz. De werkelijke set velden hangt af van de configuratie van je account.

Hernoemde invoer (bij POST / PUT)

Invoer Opgeslagen als
image_1 image_big_url
image_2 image_medium_url
image_3 image_small_url

Voorbeelden

# In-stock products in a category
curl 'https://api:KEY@app.personyze.com/rest/products
        /where/category=tools&is_in_stock=yes
        /columns/id,internal_id,title,price,inventory
        /order_by/title
        /limit/100'
# Lookup by internal_id
curl 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234'
# Insert (or "patch" — duplicate internal_id will UPDATE rather than fail)
curl -X POST 'https://api:KEY@app.personyze.com/rest/products' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"SKU-1234",
          "title":"Cordless Drill",
          "price":129.99,
          "is_in_stock":"yes",
          "image_1":"https://cdn.example.com/big.jpg"}'
# → 51234
# Update by internal_id
curl -X PUT 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234' \
     -H 'Content-Type: application/json' \
     -d '{"price":119.99,"is_in_stock":"no"}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234'

Upsertgedrag bij POST.POST doet patch-on-duplicate: een bestaande internal_id werkt de rij bij in plaats van te mislukken. Gebruik voor een bulkimport vanaf een feed-URL liever de geplande feedsynchronisatie via de interface van Personyze dan REST-aanroepen per rij.

articles

Artikelcatalogus (blogberichten, nieuws, items in een kennisbank). Dezelfde vorm als products maar voor redactionele content.

GET POST PUT DELETE

Identificerende / huishoudelijke kolommen

Kolom Opmerkingen
id Primaire sleutel. Automatisch toegekend.
internal_id Je externe identificator (slug, CMS-id).
data_last_modified Unix-seconden.
is_published 'yes' / 'no' -enum.

Veelgebruikte artikelvelden (eigen)

title, description_short, description_long, image_big_url, image_medium_url, image_small_url, author, publish_date, category, tags, rank, enz. De werkelijke lijst hangt af van de other_columns_info -configuratie van je site.

Hernoemde invoer

Invoer Opgeslagen als
image_1 image_big_url
image_2 image_medium_url
image_3 image_small_url

Voorbeelden

# Recent published articles
curl 'https://api:KEY@app.personyze.com/rest/articles
        /where/is_published=yes
        /columns/id,internal_id,title,author,publish_date
        /order_by_desc/publish_date
        /limit/100'
# Lookup by internal_id
curl 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize'
# Insert
curl -X POST 'https://api:KEY@app.personyze.com/rest/articles' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"how-to-personalize",
          "title":"How to personalize your site",
          "author":"Alice",
          "is_published":"yes",
          "image_1":"https://cdn.example.com/big.jpg"}' 
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize' \
     -H 'Content-Type: application/json' \
     -d '{"is_published":"no"}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize'

Artikelinteracties staan op het endpoint do.POST doet patch-on-duplicate (hetzelfde als products). Gebruik voor het volgen van bezoekersinteracties met artikelen (bekeken / gereageerd / geliket) do met de Article … -commando’s — er is op dit moment geen eigen REST-object voor.

products_interactions

Logboek van interacties met producten: weergaven, toevoegingen aan de winkelwagen, aankopen, “favoriet”, “bezorgd”. Vooral toevoegen. Ondersteund door een archieftabel.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
user_id FK → users.user_id. Geïndexeerd.
product_internal_id FK → products.internal_id. Eerste kolom van een samengestelde index [product_internal_id, user_id, transaction_time].
quantity Standaard 1 bij het invoegen.
status Een van viewed, delivered, extra (≈ aan de winkelwagen toegevoegd), favorite, goal (aankoop). Geïndexeerd.
action_id Als de interactie aan een Personyze-actie is toegeschreven, de ID daarvan. Anders null.
transaction_time Unix-seconden — tijd van de bestelling/transactie.
time Unix-seconden — wanneer de rij is gelogd. Geïndexeerd.
amount Geldwaarde (volgens de valuta-instellingen van de site).

Invoegen: de gebruiker identificeren

POST accepteert één van deze om de gebruiker te identificeren:

Veld Wordt omgezet naar
user_id (numeriek) Direct opzoeken op de primaire sleutel.
user_internal_id user_id van de gebruiker met die internal_id. Maakt automatisch een tijdelijke users -rij aan als die ontbreekt.
user_email user_id van de gebruiker met die email. Maakt die automatisch aan als die ontbreekt.

Voorbeelden

# All purchases in a window, paged
curl 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/status=goal&time>1730000000
        /order_by_desc/time
        /limit/1000'
# A specific user's history with a product
curl 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/product_internal_id=SKU-1234
        /columns/user_id,status,quantity,amount,transaction_time'
# Log a purchase
curl -X POST 'https://api:KEY@app.personyze.com/rest/products_interactions' \
     -H 'Content-Type: application/json' \
     -d '{"user_internal_id":"acct-987",
          "product_internal_id":"SKU-1234",
          "quantity":2,
          "status":"goal",
          "transaction_time":1734000000,
          "amount":259.98}' 
# Delete by composite key
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/user_id=5712334&product_internal_id=SKU-1234&status=viewed'

Geïndexeerde kolommen

user_id, [product_internal_id, user_id, transaction_time], status, time. Query’s zonder where op een van deze (of order_by op dezelfde) worden geweigerd als scans van de volledige tabel.

events

Algemeen eventlogboek — één rij per gevolgd event dat is vastgelegd door de JS-tracker, de SDK of het endpoint do . Via REST op dit moment alleen-lezen.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
user_id FK → users.user_id. Geïndexeerd.
time Unix-seconden.
visit_id FK → rij van het bezoek.
container_id FK → containers.id (de bron van het event). Geïndexeerd.
container_types Het type van de container (click event, submit event, enz.).
value Tekenreeks met de payload van het event.
first_visit_id Eerste visit_id van de sessie.
session_start_time Unix-seconden.

Voorbeelden

# Recent events for a user
curl 'https://api:KEY@app.personyze.com/rest/events
        /where/user_id=5712334
        /order_by_desc/time
        /limit/100'
# Events from a specific container in a window
curl 'https://api:KEY@app.personyze.com/rest/events
        /where/container_id=1234&time>1730000000&time<1731000000
        /columns/id,user_id,time,value
        /order_by_desc/time
        /limit/1000'

Wanneer je events gebruikt en wanneer summary_actions.De tabel is groot; query’s moeten filteren op een geïndexeerde kolom (id, user_id, container_id, …), anders wordt het verzoek geweigerd. Gebruik voor geaggregeerde KPI’s over tijd in plaats daarvan summary_actions — daarin staan vooraf berekende dagelijkse tellers per actie.

forms

Logboek van formulierinzendingen. Eén rij per formulierinzending die door de tracker is vastgelegd. Via REST op dit moment alleen-lezen.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
user_id FK → users.user_id. Geïndexeerd.
time Unix-seconden.
action_id De Personyze-actie die dit formulier activeerde of bevatte, indien van toepassing.
session_start_time Unix-seconden.
plus data (JSON) De ingezonden formulierpayload, verpakt als JSON. Wordt inline gelezen (de sleutels verschijnen als kolommen in het antwoord).

De data -JSON wordt bij het lezen automatisch uitgevouwen tot sleutels op het hoogste niveau — vraag specifieke eigen velden op naam op.

Voorbeelden

# Submissions for a user
curl 'https://api:KEY@app.personyze.com/rest/forms
        /where/user_id=5712334
        /order_by_desc/time
        /limit/100'
# Submissions tied to a specific action
curl 'https://api:KEY@app.personyze.com/rest/forms
        /where/action_id=42&time>1730000000
        /columns/user_id,time,email,name,message
        /limit/1000'

Geïndexeerde kolommen zijn onder meer user_id, action_id, en time. Query’s moeten op een van deze filteren.

do

Verdeler voor commando’s die je afvuurt en vergeet: stuur één update van een gebruikersprofiel of één interactie-event zonder het trackerprotocol te spreken. De body is een array met commando’s; elk commando wordt afzonderlijk verwerkt.

GET POST PUT DELETE

Vorm van het verzoek

[
    [<key-type>, <key-value>, <command>, <arg1>, <arg2>, ...],
    [<key-type>, <key-value>, <command>, <arg1>, <arg2>, ...],
    ...
]
  • <key-type>: "user_id", "internal_id", of "email". Optioneel — laat weg bij commando’s die niet op een gebruiker zijn gericht.
  • <key-value>: de bijbehorende identificator.
  • <command>: een tekenreeks (niet hoofdlettergevoelig). Zie de lijst hieronder.
  • <arg…>: positionele argumenten die per commando verschillen.

Een geslaagde POST geeft niets terug; bij fouten wordt een exceptie gegooid (de hele batch stopt bij de eerste fout).

Commando’s

Gebruikersprofiel

["internal_id", "acct-987", "User profile", "first_name", "Alice", "custom_t_1", "VIP"]

Na de naam van het commando wisselen de argumenten elkaar af: field, value, field, value, …

Productinteracties

["internal_id", "acct-987", "Product viewed",          "SKU-1234"]
["internal_id", "acct-987", "Product added to cart",   "SKU-1234", "quantity", 2]
["internal_id", "acct-987", "Product liked",           "SKU-1234"]
["internal_id", "acct-987", "Product purchased",       "SKU-1234", "quantity", 2, "amount", 259.98]
["internal_id", "acct-987", "Product removed from cart","SKU-1234"]
["internal_id", "acct-987", "Product unliked",         "SKU-1234"]

Na de SKU volgen optionele sleutel-waardeparen: "quantity", "amount", "action_id", "transaction_time".

Artikelinteracties

["email", "alice@example.com", "Article viewed",   "how-to-personalize"]
["email", "alice@example.com", "Article liked",    "how-to-personalize"]
["email", "alice@example.com", "Article commented","how-to-personalize"]
["email", "alice@example.com", "Article unliked", "how-to-personalize"]
["email", "alice@example.com", "Article goal",     "how-to-personalize"]

Voorbeelden

# Tag a user as VIP
curl -X POST 'https://api:KEY@app.personyze.com/rest/do' \
     -H 'Content-Type: application/json' \
     -d '[["internal_id","acct-987","User profile","custom_t_1","VIP","first_name","Alice"]]' 
# Log a purchase + a profile update in one round-trip
curl -X POST 'https://api:KEY@app.personyze.com/rest/do' \
     -H 'Content-Type: application/json' \
     -d '[
       ["email","alice@example.com","Product purchased","SKU-1234","quantity",2,"amount",259.98],
       ["email","alice@example.com","User profile","customer_segment","loyal"]
     ]' 

Wanneer je do gebruikt en wanneer getypeerde endpoints.Opzoeksleutels (internal_id / email) maken automatisch een tijdelijke users -rij aan als geen gebruiker overeenkomt. Gebruik voor het loggen van interacties met een hoge doorvoer liever products_interactions (getypeerd en geïndexeerd) of de gebundelde event-API van de SDK.

sessions_archive

Eén rij per bezoekerssessie (een aaneengesloten periode van activiteit). Ondersteund door de archieftabel met een lange levensduur — veel breder dan events, met metadata over locatie, apparaat, scherm en browser.

GET POST PUT DELETE

Identificerend / huishoudelijk

Kolom Opmerkingen
first_visit_id Primaire sleutel. De id van de eerste visit -rij in deze sessie.
user_id FK → users.user_id. Geïndexeerd.
session_start_time Unix-seconden.
last_session_time Unix-seconden.
session_counter Het hoeveelste sessienummer voor deze gebruiker (1, 2, 3, …).
total_visits Bekeken pagina’s in de sessie.
time_in_focus Seconden dat het tabblad echt de focus had.
time_total Seconden van het begin tot de laatste activiteit.

Geo / taalinstelling / apparaat

Kolom Opmerkingen
time_zone Tijdzoneverschil van de bezoeker (uren).
country_code, region_code, city Geo (op basis van IP). city wordt gekoppeld uit de gedeelde opzoektabel, dus het is een leesbare naam (null als er geen match is).
lang_0, lang_1, lang_2 De eerste drie Accept-Language-waarden.
screen_width, screen_height, screen_depth Pixels / bitdiepte.

Tellers voor betrokkenheid

Kolom Opmerkingen
total_goal_value, total_n_goals Totalen van doelen voor de sessie.
page_click, page_right_mouse, page_key_up, page_scroll Tellingen per event.

Landings-URL & verwijzer

Kolom Opmerkingen
url_prefix, url_host_port, url_path, url_query, url_fragment URL van de eerste pagina van de sessie, in delen gesplitst. url_prefix is de codering van schema+www.
referrer_prefix, referrer_host_port, referrer_path, referrer_query, referrer_fragment Dezelfde vorm, voor de verwijzer.
referrer_type Numerieke tag (zoeken / sociaal / direct / …).
search_word Zoekopdracht bij binnenkomst via een zoekmachine.

UTM / advertentiecampagne

ad_campaign, ad_source, ad_medium, ad_term, ad_content — de standaard UTM-parameters zoals vastgelegd bij binnenkomst.

Voorbeelden

# Sessions for a user, most recent first
curl 'https://api:KEY@app.personyze.com/rest/sessions_archive
        /where/user_id=5712334
        /columns/first_visit_id,session_start_time,total_visits,country_code,city
        /order_by_desc/session_start_time
        /limit/100'
# Single session by primary key
curl 'https://api:KEY@app.personyze.com/rest/sessions_archive
        /where/first_visit_id=900000000123
        /columns/user_id,session_start_time,total_visits,total_goal_value'

Geïndexeerde kolommen: first_visit_id, user_id, plus verschillende andere. Query’s moeten filteren op een geïndexeerde kolom, anders wordt het verzoek geweigerd als scan van de volledige tabel.

user_interests

Interesses, categorieën, tags en tags voor familie/cross-sell/upsell per gebruiker, afgeleid door de pipeline van de tracker. Eén rij per (user_id, value, class, time). Alleen-lezen.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
user_id FK → users.user_id. Geïndexeerd.
value Het interessetoken (bijv. categorienaam, tag, trefwoord).
class interest, category, tag, family, cross category, upsale category.
rank Kommagetal. Relevantiescore binnen de klasse.
n_times Hoe vaak deze waarde voor de gebruiker is waargenomen.
time Unix-seconden — wanneer de interesse voor het laatst is bijgewerkt. Geïndexeerd.

Geïndexeerde kolommen: user_id, time. Query’s moeten filteren op een geïndexeerde kolom.

Voorbeelden

# All interests for one user, strongest first
curl 'https://api:KEY@app.personyze.com/rest/user_interests
        /where/user_id=5712334
        /columns/value,class,rank,n_times,time
        /order_by_desc/rank
        /limit/100'
# Only categories, recently updated
curl 'https://api:KEY@app.personyze.com/rest/user_interests
        /where/user_id=5712334&class=category
        /order_by_desc/time
        /limit/50'

products_stats_*

Geaggregeerde interactietellers per product, bijgehouden door de offline pipeline voor samenvattingen. Zes doorlopende vensters zijn beschikbaar op aparte paden — kies het venster dat past bij je rapportagehorizon. Ze delen allemaal dezelfde kolomvorm en indexen; alleen het tijdvenster verschilt.

GET POST PUT DELETE

Endpoints

Pad Venster
/rest/products_stats_1day laatste 1 dag
/rest/products_stats_2day laatste 2 dagen
/rest/products_stats_4day laatste 4 dagen
/rest/products_stats_week laatste 7 dagen
/rest/products_stats_recent recent (doorlopend — bepaald door de pipeline)
/rest/products_stats_all hele levensduur

Identificerend

Kolom Opmerkingen
internal_id Primaire sleutel. De externe identificator van het product (SKU / id uit de catalogus die je hebt aangeleverd). Geïndexeerd.

Tellers per product (aantal interacties met dit product binnen het venster)

Kolom Opmerkingen
n_viewed Aantal weergave-events. Geïndexeerd.
n_delivered Aantal bezorgde (getoonde) aanbevelingen. Geïndexeerd (samengesteld met n_viewed).
n_extra “Extra” interacties (bijv. in de winkelwagen). Geïndexeerd (samengesteld met n_viewed).
n_favorite Als favoriet / op de verlanglijst gezet. Geïndexeerd (samengesteld met n_viewed).
n_goal Voltooide doelen (aankopen). Geïndexeerd (samengesteld met n_viewed).

Verdelingsstatistieken voor de hele catalogus

Dezelfde waarde op elke rij — beschrijft de hele catalogus binnen dit venster. Voor elke metriek M ∈ {viewed, delivered, extra, favorite, goal}:

Kolom Opmerkingen
overall_n_<M> Som over alle producten.
overall_avg_<M> Gemiddelde over alle producten.
overall_avg_nonzero_<M> Gemiddelde over producten met minstens één event.
percentile_<M> De percentielrang van deze rij voor de metriek.

Laatste 3 doelgebruikers (meest recente kopers van dit product)

Kolom Opmerkingen
last_goal_user_id_0, last_goal_user_id_1, last_goal_user_id_2 Afzonderlijk geïndexeerd.
last_goal_user_time_0, last_goal_user_time_1, last_goal_user_time_2 Unix-seconden.

Geïndexeerde kolommen

internal_id, n_viewed, n_delivered, n_extra, n_favorite, n_goal, last_goal_user_id_0, last_goal_user_id_1, last_goal_user_id_2. Query’s moeten filteren op (of order_by) een van deze.

Voorbeelden

# Top 50 most-viewed products this week
curl 'https://api:KEY@app.personyze.com/rest/products_stats_week
        /where/n_viewed>0
        /columns/internal_id,n_viewed,n_delivered,n_extra,n_goal,percentile_viewed
        /order_by_desc/n_viewed
        /limit/50'
# Lookup one product's lifetime stats
curl 'https://api:KEY@app.personyze.com/rest/products_stats_all
        /where/internal_id=SKU-12345'
# What a specific user purchased recently (matches against last 3 goal users)
curl 'https://api:KEY@app.personyze.com/rest/products_stats_recent
        /where/last_goal_user_id_0=5712334
        /columns/internal_id,n_goal,last_goal_user_time_0'

summary_actions

Dagelijks geaggregeerde KPI’s per actie — één rij per (day, action_id) voor acties die aan een specifieke campagne zijn gekoppeld (condition_id). Alleen-lezen.

GET POST PUT DELETE

Strikte eis voor indexering.Alleen day is geïndexeerd. Elk verzoek moet where/day… bevatten — er is geen uitweg met alleen order_by.

Identificerend

Kolom Opmerkingen
day Unix-tijdstempel (seconden) van 0:00 (middernacht) van de dag in Greenwich-tijd (GMT+0000).
action_name Naam van de actie.
action_id ID van de actie.
campaign_name Naam van de campagne waartoe de actie behoort.
campaign_id ID van de campagne waartoe de actie behoort.

Blootstelling van de actie

Kolom Opmerkingen
n_executed Hoe vaak uitgevoerd (acties gelden als uitgevoerd, ook als de visuele content nog niet is getoond).
n_delivered Hoe vaak we van de browserpagina de melding kregen dat de content zichtbaar werd.
n_extra Hangt af van het actietype. Voor HTML-acties: het aantal kliks. Voor formulieracties: het aantal inzendingen.
n_failed Alleen geteld voor e-mailacties. Hoe vaak het versturen van een e-mail mislukte (bijv. een ongeldig adres).
n_closed Hoe vaak de gebruiker op de knop “sluiten” klikte nadat de content van de actie zichtbaar werd.
n_sessions_executed In hoeveel afzonderlijke sessies er minstens één n_executed voor deze actie was.
n_sessions_delivered In hoeveel afzonderlijke sessies er minstens één was: n_delivered.
n_sessions_extra In hoeveel afzonderlijke sessies er minstens één n_extra.
n_sessions_failed In hoeveel afzonderlijke sessies er minstens één n_failed.
n_sessions_closed In hoeveel afzonderlijke sessies er minstens één n_closed.

Toeschrijving aan producten (als deze actie producten aanbeval)

Kolom Opmerkingen
products_goal_n_times Hoeveel producten (over alle bezoekers) “gekocht” bereikten tijdens een sessie waarin deze actie werd uitgevoerd. Telt elk aankoopevent van een product, dus één bestelling met 3 items telt 3.
products_goal_n_sessions In hoeveel afzonderlijke sessies er minstens één product werd gekocht nadat deze actie was uitgevoerd.
products_goal_value Som van de geldwaarden van alle gekochte producten die zijn geteld in products_goal_n_times.
products_recom_viewed_n_times Hoe vaak een product dat deze actie aanbeval daarna werd bekeken.
products_recom_viewed_n_sessions In hoeveel afzonderlijke sessies minstens één aanbevolen product werd bekeken.
products_recom_extra_n_times Hoe vaak een aanbevolen product daarna aan de winkelwagen werd toegevoegd (of op een andere manier de interactie “extra” bereikte).
products_recom_extra_n_sessions In hoeveel afzonderlijke sessies minstens één aanbevolen product de interactie “extra” bereikte.
products_recom_extra_value Som van de geldwaarden van alle aanbevolen producten met een interactie “extra”.
products_recom_goal_n_times Hoe vaak een aanbevolen product daarna werd gekocht.
products_recom_goal_n_sessions In hoeveel afzonderlijke sessies minstens één aanbevolen product werd gekocht.
products_recom_goal_value Som van de geldwaarden van alle gekochte aanbevolen producten.

Toeschrijving aan artikelen

Dezelfde vorm als bij de toeschrijving aan producten, maar voor artikelen: articles_recom_viewed_n_times, articles_recom_viewed_n_sessions, articles_recom_extra_n_times, articles_recom_extra_n_sessions, articles_recom_extra_value, articles_recom_goal_n_times, articles_recom_goal_n_sessions, articles_recom_goal_value.

Eigen doelevents per account

Een account kan tot 12 doelevents instellen. Voor elke eventcontainer die in je account is ingesteld met een goal_event_index (N van 1 tot 12 die niet nul is, verschijnen er vier extra kolommen in het antwoord:

  • goal_event_N_name — Weergavenaam van het ingestelde doelevent. Wordt teruggegeven als letterlijke tekenreeks, op elke rij hetzelfde.
  • goal_event_N_n_times — Hoe vaak dit doelevent afging tijdens een sessie waarin de actie werd uitgevoerd.
  • goal_event_N_n_sessions — In hoeveel afzonderlijke sessies dit doelevent minstens één keer afging nadat de actie was uitgevoerd.
  • goal_event_N_value — Som van de geldwaarden die voor dit doelevent zijn gerapporteerd over de keren die zijn geteld in goal_event_N_n_times (nul, tenzij de container van het doelevent is ingesteld om een waarde vast te leggen).

Voorbeelden

# Last 30 days, daily KPIs per action
curl 'https://api:KEY@app.personyze.com/rest/summary_actions
        /where/day>1730000000
        /columns/day,action_name,n_executed,n_delivered,n_extra,products_goal_value
        /order_by_desc/day
        /limit/1000'
# A specific action's lifetime
curl 'https://api:KEY@app.personyze.com/rest/summary_actions
        /where/action_id=42&day>1700000000
        /order_by/day
        /limit/1000'

tracker_code

Geeft het JS-snippet terug dat je op je site insluit om de Personyze-tracker op te starten. De inhoud wordt afgeleid uit de instellingen van je account (account-ID, trackinghost, vlaggen voor async/niet verbergen).

GET POST PUT DELETE

Antwoord

Een gewoon text/html -snippet (of JS in een<script>), klaar om in een <head>te plakken. De body is geen JSON — dit is het ene REST-endpoint dat ruwe HTML teruggeeft.

Voorbeeld

curl 'https://api:KEY@app.personyze.com/rest/tracker_code'
<script>(function(s){
    s.async = true;
    s.src = '//lcounter.personyze.com/stat-track-lib.js';
    s.onload = function() {
        _S_T.async = true;
        _S_T.setup(5919, "example.com www.example.com");
    };
    (document.querySelector('head') || document.documentElement).appendChild(s);
}(document.createElement('script')))</script>

Conventies voor het trackersnippet.Het snippet bevat je account-ID en de lijst met toegestane hostnamen die voor dat account zijn geregistreerd. Bewerk het niet met de hand; haal het opnieuw op als je via de interface nieuwe domeinen toevoegt. Voor native SDK-clients (iOS / Android) is dit endpoint niet relevant — de SDK spreekt het trackerprotocol direct via interne endpoints.

Volgende stappen

📖 Syntaxis van padparametersVerdiep je in where/columns/order_by/limit met alle operatoren en voorbeelden. Lezen →
🔑 AuthenticatieOmgaan met de API-sleutel, indeling van de header, foutcodes, opzetten met meerdere accounts. Lezen →
🛠 Bronnen voor developersSDK’s, GitHub-repo’s en andere tools voor developers. Lezen →
Did this page answer your question?
Thank you — that goes to whoever maintains this page.