@lessly/sdk-app 86.0.0 → 87.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_types/gen/types.gen.d.ts +1625 -43
- package/dist/index.cjs +9 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +9 -20
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/gen/manifest.gen.ts +9 -20
- package/src/gen/types.gen.ts +1605 -23
|
@@ -119024,87 +119024,267 @@ export interface SupportWebhookUpdateOutput {
|
|
|
119024
119024
|
secretPrefix: string;
|
|
119025
119025
|
}
|
|
119026
119026
|
export interface TrackingDomainsCreateInput {
|
|
119027
|
+
/**
|
|
119028
|
+
* Bare hostname to serve tracking from, which must sit under the chosen domain (e.g. analytics.example.com); a suggestion is used when omitted
|
|
119029
|
+
*/
|
|
119027
119030
|
host?: string;
|
|
119031
|
+
/**
|
|
119032
|
+
* DNS records to request instead of the default CNAME to the tracking edge; leave unset unless the domain needs custom records
|
|
119033
|
+
*/
|
|
119028
119034
|
records?: {
|
|
119035
|
+
/**
|
|
119036
|
+
* Time-to-live in seconds the record should be published with; the platform picks one when omitted
|
|
119037
|
+
*/
|
|
119029
119038
|
ttl?: number;
|
|
119039
|
+
/**
|
|
119040
|
+
* Fully-qualified host the record is published at; defaults to the claimed tracking host
|
|
119041
|
+
*/
|
|
119030
119042
|
name?: string;
|
|
119043
|
+
/**
|
|
119044
|
+
* Value the record points at — the edge hostname for a CNAME, the proof string for a TXT
|
|
119045
|
+
*/
|
|
119031
119046
|
target: string;
|
|
119047
|
+
/**
|
|
119048
|
+
* DNS record type to publish, e.g. CNAME or TXT
|
|
119049
|
+
*/
|
|
119032
119050
|
recordType: string;
|
|
119033
119051
|
}[];
|
|
119052
|
+
/**
|
|
119053
|
+
* Product domain to claim the tracking host under, as listed in `domains[].domainId` by tracking_domains_list
|
|
119054
|
+
*/
|
|
119034
119055
|
domainId: string;
|
|
119035
119056
|
}
|
|
119036
119057
|
export interface TrackingDomainsCreateOutput {
|
|
119058
|
+
/**
|
|
119059
|
+
* The binding as just claimed; it starts `pending` and goes `active` once the DNS is observed live
|
|
119060
|
+
*/
|
|
119037
119061
|
binding: {
|
|
119062
|
+
/**
|
|
119063
|
+
* Fully-qualified tracking host this binding serves, e.g. analytics.example.com
|
|
119064
|
+
*/
|
|
119038
119065
|
host: string;
|
|
119066
|
+
/**
|
|
119067
|
+
* Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
|
|
119068
|
+
*/
|
|
119039
119069
|
status: ("pending" | "active" | "failed");
|
|
119070
|
+
/**
|
|
119071
|
+
* DNS records the platform expects to see published for this host, as returned when the binding was claimed
|
|
119072
|
+
*/
|
|
119040
119073
|
records: unknown[];
|
|
119074
|
+
/**
|
|
119075
|
+
* Product domain this tracking host sits under
|
|
119076
|
+
*/
|
|
119041
119077
|
domainId: string;
|
|
119078
|
+
/**
|
|
119079
|
+
* Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
|
|
119080
|
+
*/
|
|
119042
119081
|
bindingId: string;
|
|
119082
|
+
/**
|
|
119083
|
+
* When the binding was claimed
|
|
119084
|
+
*/
|
|
119043
119085
|
createdAt: string;
|
|
119086
|
+
/**
|
|
119087
|
+
* Product the binding belongs to
|
|
119088
|
+
*/
|
|
119044
119089
|
productId: string;
|
|
119090
|
+
/**
|
|
119091
|
+
* When the binding last changed status or records
|
|
119092
|
+
*/
|
|
119045
119093
|
updatedAt: string;
|
|
119094
|
+
/**
|
|
119095
|
+
* Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
|
|
119096
|
+
*/
|
|
119046
119097
|
statusDetail: (string | null);
|
|
119098
|
+
/**
|
|
119099
|
+
* Extension that claimed the binding; tracking bindings are owned by this toolkit
|
|
119100
|
+
*/
|
|
119047
119101
|
ownerExtension: string;
|
|
119048
119102
|
};
|
|
119103
|
+
/**
|
|
119104
|
+
* Ordered, human-readable steps for publishing the DNS the claim needs; empty when the platform manages the domain itself
|
|
119105
|
+
*/
|
|
119049
119106
|
instructions: string[];
|
|
119050
119107
|
}
|
|
119051
119108
|
export interface TrackingDomainsDeleteInput {
|
|
119109
|
+
/**
|
|
119110
|
+
* Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
|
|
119111
|
+
*/
|
|
119052
119112
|
bindingId: string;
|
|
119053
119113
|
}
|
|
119054
119114
|
export interface TrackingDomainsDeleteOutput {
|
|
119115
|
+
/**
|
|
119116
|
+
* Always true — the release succeeded; a failure arrives as an error, not as false
|
|
119117
|
+
*/
|
|
119055
119118
|
ok: true;
|
|
119056
119119
|
}
|
|
119057
119120
|
export interface TrackingDomainsGetInput {
|
|
119121
|
+
/**
|
|
119122
|
+
* Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
|
|
119123
|
+
*/
|
|
119058
119124
|
bindingId: string;
|
|
119059
119125
|
}
|
|
119060
119126
|
export interface TrackingDomainsGetOutput {
|
|
119127
|
+
/**
|
|
119128
|
+
* Fully-qualified tracking host this binding serves, e.g. analytics.example.com
|
|
119129
|
+
*/
|
|
119061
119130
|
host: string;
|
|
119131
|
+
/**
|
|
119132
|
+
* Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
|
|
119133
|
+
*/
|
|
119062
119134
|
status: ("pending" | "active" | "failed");
|
|
119135
|
+
/**
|
|
119136
|
+
* DNS records the platform expects to see published for this host, as returned when the binding was claimed
|
|
119137
|
+
*/
|
|
119063
119138
|
records: unknown[];
|
|
119139
|
+
/**
|
|
119140
|
+
* Product domain this tracking host sits under
|
|
119141
|
+
*/
|
|
119064
119142
|
domainId: string;
|
|
119143
|
+
/**
|
|
119144
|
+
* Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
|
|
119145
|
+
*/
|
|
119065
119146
|
bindingId: string;
|
|
119147
|
+
/**
|
|
119148
|
+
* When the binding was claimed
|
|
119149
|
+
*/
|
|
119066
119150
|
createdAt: string;
|
|
119151
|
+
/**
|
|
119152
|
+
* Product the binding belongs to
|
|
119153
|
+
*/
|
|
119067
119154
|
productId: string;
|
|
119155
|
+
/**
|
|
119156
|
+
* When the binding last changed status or records
|
|
119157
|
+
*/
|
|
119068
119158
|
updatedAt: string;
|
|
119159
|
+
/**
|
|
119160
|
+
* Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
|
|
119161
|
+
*/
|
|
119069
119162
|
statusDetail: (string | null);
|
|
119163
|
+
/**
|
|
119164
|
+
* Extension that claimed the binding; tracking bindings are owned by this toolkit
|
|
119165
|
+
*/
|
|
119070
119166
|
ownerExtension: string;
|
|
119071
119167
|
}
|
|
119072
119168
|
export interface TrackingDomainsListInput {
|
|
119073
119169
|
}
|
|
119074
119170
|
export interface TrackingDomainsListOutput {
|
|
119171
|
+
/**
|
|
119172
|
+
* The product's domains as the platform vouches for them — the set a new tracking host may be claimed under
|
|
119173
|
+
*/
|
|
119075
119174
|
domains: {
|
|
119175
|
+
/**
|
|
119176
|
+
* Who runs the DNS: `managed` means the platform publishes records for you, `external` means you publish them yourself
|
|
119177
|
+
*/
|
|
119076
119178
|
mode: ("external" | "managed");
|
|
119179
|
+
/**
|
|
119180
|
+
* Apex domain name the product owns, e.g. example.com
|
|
119181
|
+
*/
|
|
119077
119182
|
domain: string;
|
|
119183
|
+
/**
|
|
119184
|
+
* Stable platform id of the product domain, and what a claim takes as its `domainId`
|
|
119185
|
+
*/
|
|
119078
119186
|
domainId: string;
|
|
119187
|
+
/**
|
|
119188
|
+
* ISO-8601 timestamp of when the domain was added to the product
|
|
119189
|
+
*/
|
|
119079
119190
|
createdAt: string;
|
|
119191
|
+
/**
|
|
119192
|
+
* How many extensions currently hold a host binding under this domain
|
|
119193
|
+
*/
|
|
119080
119194
|
extensionCount: number;
|
|
119081
119195
|
}[];
|
|
119196
|
+
/**
|
|
119197
|
+
* Tracking-host bindings this toolkit currently holds across those domains
|
|
119198
|
+
*/
|
|
119082
119199
|
bindings: {
|
|
119200
|
+
/**
|
|
119201
|
+
* Fully-qualified tracking host this binding serves, e.g. analytics.example.com
|
|
119202
|
+
*/
|
|
119083
119203
|
host: string;
|
|
119204
|
+
/**
|
|
119205
|
+
* Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
|
|
119206
|
+
*/
|
|
119084
119207
|
status: ("pending" | "active" | "failed");
|
|
119208
|
+
/**
|
|
119209
|
+
* DNS records the platform expects to see published for this host, as returned when the binding was claimed
|
|
119210
|
+
*/
|
|
119085
119211
|
records: unknown[];
|
|
119212
|
+
/**
|
|
119213
|
+
* Product domain this tracking host sits under
|
|
119214
|
+
*/
|
|
119086
119215
|
domainId: string;
|
|
119216
|
+
/**
|
|
119217
|
+
* Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
|
|
119218
|
+
*/
|
|
119087
119219
|
bindingId: string;
|
|
119220
|
+
/**
|
|
119221
|
+
* When the binding was claimed
|
|
119222
|
+
*/
|
|
119088
119223
|
createdAt: string;
|
|
119224
|
+
/**
|
|
119225
|
+
* Product the binding belongs to
|
|
119226
|
+
*/
|
|
119089
119227
|
productId: string;
|
|
119228
|
+
/**
|
|
119229
|
+
* When the binding last changed status or records
|
|
119230
|
+
*/
|
|
119090
119231
|
updatedAt: string;
|
|
119232
|
+
/**
|
|
119233
|
+
* Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
|
|
119234
|
+
*/
|
|
119091
119235
|
statusDetail: (string | null);
|
|
119236
|
+
/**
|
|
119237
|
+
* Extension that claimed the binding; tracking bindings are owned by this toolkit
|
|
119238
|
+
*/
|
|
119092
119239
|
ownerExtension: string;
|
|
119093
119240
|
}[];
|
|
119094
119241
|
}
|
|
119095
119242
|
export interface TrackingDomainsVerifyInput {
|
|
119243
|
+
/**
|
|
119244
|
+
* Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
|
|
119245
|
+
*/
|
|
119096
119246
|
bindingId: string;
|
|
119097
119247
|
}
|
|
119098
119248
|
export interface TrackingDomainsVerifyOutput {
|
|
119249
|
+
/**
|
|
119250
|
+
* Fully-qualified tracking host this binding serves, e.g. analytics.example.com
|
|
119251
|
+
*/
|
|
119099
119252
|
host: string;
|
|
119253
|
+
/**
|
|
119254
|
+
* Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
|
|
119255
|
+
*/
|
|
119100
119256
|
status: ("pending" | "active" | "failed");
|
|
119257
|
+
/**
|
|
119258
|
+
* DNS records the platform expects to see published for this host, as returned when the binding was claimed
|
|
119259
|
+
*/
|
|
119101
119260
|
records: unknown[];
|
|
119261
|
+
/**
|
|
119262
|
+
* Product domain this tracking host sits under
|
|
119263
|
+
*/
|
|
119102
119264
|
domainId: string;
|
|
119265
|
+
/**
|
|
119266
|
+
* Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
|
|
119267
|
+
*/
|
|
119103
119268
|
bindingId: string;
|
|
119269
|
+
/**
|
|
119270
|
+
* When the binding was claimed
|
|
119271
|
+
*/
|
|
119104
119272
|
createdAt: string;
|
|
119273
|
+
/**
|
|
119274
|
+
* Product the binding belongs to
|
|
119275
|
+
*/
|
|
119105
119276
|
productId: string;
|
|
119277
|
+
/**
|
|
119278
|
+
* When the binding last changed status or records
|
|
119279
|
+
*/
|
|
119106
119280
|
updatedAt: string;
|
|
119281
|
+
/**
|
|
119282
|
+
* Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
|
|
119283
|
+
*/
|
|
119107
119284
|
statusDetail: (string | null);
|
|
119285
|
+
/**
|
|
119286
|
+
* Extension that claimed the binding; tracking bindings are owned by this toolkit
|
|
119287
|
+
*/
|
|
119108
119288
|
ownerExtension: string;
|
|
119109
119289
|
}
|
|
119110
119290
|
export interface TrackingEventNamesArchiveInput {
|
|
@@ -119114,7 +119294,13 @@ export interface TrackingEventNamesArchiveInput {
|
|
|
119114
119294
|
name: string;
|
|
119115
119295
|
}
|
|
119116
119296
|
export interface TrackingEventNamesArchiveOutput {
|
|
119297
|
+
/**
|
|
119298
|
+
* Event name whose status was changed
|
|
119299
|
+
*/
|
|
119117
119300
|
name: string;
|
|
119301
|
+
/**
|
|
119302
|
+
* The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
|
|
119303
|
+
*/
|
|
119118
119304
|
status: ("active" | "archived");
|
|
119119
119305
|
}
|
|
119120
119306
|
export interface TrackingEventNamesListInput {
|
|
@@ -119136,13 +119322,37 @@ export interface TrackingEventNamesListInput {
|
|
|
119136
119322
|
status?: ("active" | "archived");
|
|
119137
119323
|
}
|
|
119138
119324
|
export interface TrackingEventNamesListOutput {
|
|
119325
|
+
/**
|
|
119326
|
+
* The matching catalogue entries, ordered by the requested sort
|
|
119327
|
+
*/
|
|
119139
119328
|
names: {
|
|
119329
|
+
/**
|
|
119330
|
+
* Event name exactly as the tracking script sends it — the string other tools take as their `event`
|
|
119331
|
+
*/
|
|
119140
119332
|
name: string;
|
|
119333
|
+
/**
|
|
119334
|
+
* How many events with this name have been received in total
|
|
119335
|
+
*/
|
|
119141
119336
|
count: number;
|
|
119337
|
+
/**
|
|
119338
|
+
* `active` for a name in use, `archived` for one hidden from pickers and reports
|
|
119339
|
+
*/
|
|
119142
119340
|
status: string;
|
|
119341
|
+
/**
|
|
119342
|
+
* ISO-8601 timestamp of the most recent event received under this name
|
|
119343
|
+
*/
|
|
119143
119344
|
lastSeen: string;
|
|
119345
|
+
/**
|
|
119346
|
+
* ISO-8601 timestamp of the first event ever received under this name
|
|
119347
|
+
*/
|
|
119144
119348
|
firstSeen: string;
|
|
119349
|
+
/**
|
|
119350
|
+
* Property keys sampled from recent events with this name, so you can see what the payload carries
|
|
119351
|
+
*/
|
|
119145
119352
|
propsKeys: string[];
|
|
119353
|
+
/**
|
|
119354
|
+
* Whether this name is marked a conversion, which is what makes it available as a workflow trigger
|
|
119355
|
+
*/
|
|
119146
119356
|
isConversion: boolean;
|
|
119147
119357
|
}[];
|
|
119148
119358
|
}
|
|
@@ -119157,7 +119367,13 @@ export interface TrackingEventNamesSetConversionInput {
|
|
|
119157
119367
|
isConversion: boolean;
|
|
119158
119368
|
}
|
|
119159
119369
|
export interface TrackingEventNamesSetConversionOutput {
|
|
119370
|
+
/**
|
|
119371
|
+
* Event name the conversion flag was applied to
|
|
119372
|
+
*/
|
|
119160
119373
|
name: string;
|
|
119374
|
+
/**
|
|
119375
|
+
* The flag as it now stands after the change
|
|
119376
|
+
*/
|
|
119161
119377
|
isConversion: boolean;
|
|
119162
119378
|
}
|
|
119163
119379
|
export interface TrackingEventNamesUnarchiveInput {
|
|
@@ -119167,20 +119383,44 @@ export interface TrackingEventNamesUnarchiveInput {
|
|
|
119167
119383
|
name: string;
|
|
119168
119384
|
}
|
|
119169
119385
|
export interface TrackingEventNamesUnarchiveOutput {
|
|
119386
|
+
/**
|
|
119387
|
+
* Event name whose status was changed
|
|
119388
|
+
*/
|
|
119170
119389
|
name: string;
|
|
119390
|
+
/**
|
|
119391
|
+
* The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
|
|
119392
|
+
*/
|
|
119171
119393
|
status: ("active" | "archived");
|
|
119172
119394
|
}
|
|
119173
119395
|
export interface TrackingGoogleadsConnectionStatusInput {
|
|
119174
119396
|
}
|
|
119175
119397
|
export type TrackingGoogleadsConnectionStatusOutput = ({
|
|
119398
|
+
/**
|
|
119399
|
+
* Where the Google Ads connection stands: connected means an account is chosen and its credential works, so the other tools will run.
|
|
119400
|
+
*/
|
|
119176
119401
|
state: "connected";
|
|
119402
|
+
/**
|
|
119403
|
+
* The Google Ads account the data is read from and conversions are written to, as a customer id. Only present while connected.
|
|
119404
|
+
*/
|
|
119177
119405
|
customerId: string;
|
|
119406
|
+
/**
|
|
119407
|
+
* The manager account the connection authenticates through, as a Google customer id. Same as customerId when the account is not managed. Only present while connected.
|
|
119408
|
+
*/
|
|
119178
119409
|
loginCustomerId: string;
|
|
119179
119410
|
} | {
|
|
119411
|
+
/**
|
|
119412
|
+
* Google is authorised but nobody has picked which Google Ads account to use yet, so nothing can run until someone does.
|
|
119413
|
+
*/
|
|
119180
119414
|
state: "pending_account_selection";
|
|
119181
119415
|
} | {
|
|
119416
|
+
/**
|
|
119417
|
+
* The Google authorisation expired or was revoked and has to be granted again before anything can run.
|
|
119418
|
+
*/
|
|
119182
119419
|
state: "reauth_required";
|
|
119183
119420
|
} | {
|
|
119421
|
+
/**
|
|
119422
|
+
* No Google Ads connection has been set up for this product at all.
|
|
119423
|
+
*/
|
|
119184
119424
|
state: "not_connected";
|
|
119185
119425
|
});
|
|
119186
119426
|
export interface TrackingGoogleadsConversionActionsInput {
|
|
@@ -119195,26 +119435,77 @@ export type TrackingGoogleadsConversionActionsOutput = {
|
|
|
119195
119435
|
export interface TrackingGoogleadsFeedbackConfigGetInput {
|
|
119196
119436
|
}
|
|
119197
119437
|
export interface TrackingGoogleadsFeedbackConfigGetOutput {
|
|
119438
|
+
/**
|
|
119439
|
+
* How the uploads coexist with the account's own tag: existing_pixel means the Google tag also records these conversions, so send only to actions the tag does not already cover; fresh_pixel means these uploads are the only source.
|
|
119440
|
+
*/
|
|
119198
119441
|
mode: ("existing_pixel" | "fresh_pixel");
|
|
119442
|
+
/**
|
|
119443
|
+
* Which tracked events become which Google Ads conversion action, and where each one takes its money value from. Disabled rules stay listed.
|
|
119444
|
+
*/
|
|
119199
119445
|
rules: {
|
|
119446
|
+
/**
|
|
119447
|
+
* Tracked event-name this rule uploads, as listed by tracking_event-names_list
|
|
119448
|
+
*/
|
|
119200
119449
|
event: string;
|
|
119450
|
+
/**
|
|
119451
|
+
* What monetary value is reported to Google for each conversion this rule uploads
|
|
119452
|
+
*/
|
|
119201
119453
|
value: ({
|
|
119454
|
+
/**
|
|
119455
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119456
|
+
*/
|
|
119202
119457
|
source: "revenue";
|
|
119203
119458
|
} | {
|
|
119459
|
+
/**
|
|
119460
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119461
|
+
*/
|
|
119204
119462
|
source: "dynamic";
|
|
119205
119463
|
} | {
|
|
119464
|
+
/**
|
|
119465
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119466
|
+
*/
|
|
119206
119467
|
source: "fixed";
|
|
119468
|
+
/**
|
|
119469
|
+
* ISO-4217 currency the fixed amount is denominated in, e.g. USD
|
|
119470
|
+
*/
|
|
119207
119471
|
currency: string;
|
|
119472
|
+
/**
|
|
119473
|
+
* The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
|
|
119474
|
+
*/
|
|
119208
119475
|
amountMinor: number;
|
|
119209
119476
|
});
|
|
119477
|
+
/**
|
|
119478
|
+
* Whether this single mapping is live; a disabled rule is kept but uploads nothing
|
|
119479
|
+
*/
|
|
119210
119480
|
enabled: boolean;
|
|
119481
|
+
/**
|
|
119482
|
+
* Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
|
|
119483
|
+
*/
|
|
119211
119484
|
conversionAction: string;
|
|
119212
119485
|
}[];
|
|
119486
|
+
/**
|
|
119487
|
+
* Whether conversions are being sent to Google Ads at all. False leaves every rule below in place but uploads nothing.
|
|
119488
|
+
*/
|
|
119213
119489
|
enabled: boolean;
|
|
119490
|
+
/**
|
|
119491
|
+
* The tenant this configuration belongs to. Never supplied by a caller — it comes from the authenticated identity.
|
|
119492
|
+
*/
|
|
119214
119493
|
productId: string;
|
|
119494
|
+
/**
|
|
119495
|
+
* How many days back each pass looks for conversions to send, and how far back a click may be matched. Google rejects clicks older than about 90 days.
|
|
119496
|
+
*/
|
|
119215
119497
|
lookbackDays: number;
|
|
119498
|
+
/**
|
|
119499
|
+
* Currency of the connected Google Ads account, as a three-letter ISO 4217 code such as EUR. Null when the account could not be read.
|
|
119500
|
+
*/
|
|
119216
119501
|
accountCurrency: (string | null);
|
|
119502
|
+
/**
|
|
119503
|
+
* The event names that may use the Dynamic value source, because revenue is known for them. Any other event needs a fixed amount.
|
|
119504
|
+
*/
|
|
119217
119505
|
dynamicValueEvents: string[];
|
|
119506
|
+
/**
|
|
119507
|
+
* Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
|
|
119508
|
+
*/
|
|
119218
119509
|
enhancedConversions: boolean;
|
|
119219
119510
|
}
|
|
119220
119511
|
export interface TrackingGoogleadsFeedbackConfigSetInput {
|
|
@@ -119230,11 +119521,23 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
|
|
|
119230
119521
|
* Any tracked event-name for this product (validated against the event-name catalog)
|
|
119231
119522
|
*/
|
|
119232
119523
|
event: string;
|
|
119524
|
+
/**
|
|
119525
|
+
* What monetary value to report to Google for each conversion this rule uploads
|
|
119526
|
+
*/
|
|
119233
119527
|
value: ({
|
|
119528
|
+
/**
|
|
119529
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119530
|
+
*/
|
|
119234
119531
|
source: "revenue";
|
|
119235
119532
|
} | {
|
|
119533
|
+
/**
|
|
119534
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119535
|
+
*/
|
|
119236
119536
|
source: "dynamic";
|
|
119237
119537
|
} | {
|
|
119538
|
+
/**
|
|
119539
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119540
|
+
*/
|
|
119238
119541
|
source: "fixed";
|
|
119239
119542
|
/**
|
|
119240
119543
|
* ISO-4217 currency code, e.g. USD
|
|
@@ -119245,6 +119548,9 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
|
|
|
119245
119548
|
*/
|
|
119246
119549
|
amountMinor?: number;
|
|
119247
119550
|
});
|
|
119551
|
+
/**
|
|
119552
|
+
* Whether this single mapping is live; a disabled rule is kept but uploads nothing
|
|
119553
|
+
*/
|
|
119248
119554
|
enabled: boolean;
|
|
119249
119555
|
/**
|
|
119250
119556
|
* Google conversion action resource: customers/<cid>/conversionActions/<id>
|
|
@@ -119265,65 +119571,209 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
|
|
|
119265
119571
|
enhancedConversions?: boolean;
|
|
119266
119572
|
}
|
|
119267
119573
|
export interface TrackingGoogleadsFeedbackConfigSetOutput {
|
|
119574
|
+
/**
|
|
119575
|
+
* The config as it now stands after the write, with server-side normalisation applied
|
|
119576
|
+
*/
|
|
119268
119577
|
config: {
|
|
119578
|
+
/**
|
|
119579
|
+
* How our uploads sit beside your own tag: `existing_pixel` only fills gaps it left, `fresh_pixel` reports our data alone
|
|
119580
|
+
*/
|
|
119269
119581
|
mode: ("existing_pixel" | "fresh_pixel");
|
|
119582
|
+
/**
|
|
119583
|
+
* The event-to-conversion-action mappings, each with its own value source
|
|
119584
|
+
*/
|
|
119270
119585
|
rules: {
|
|
119586
|
+
/**
|
|
119587
|
+
* Tracked event-name this rule uploads, as listed by tracking_event-names_list
|
|
119588
|
+
*/
|
|
119271
119589
|
event: string;
|
|
119590
|
+
/**
|
|
119591
|
+
* What monetary value is reported to Google for each conversion this rule uploads
|
|
119592
|
+
*/
|
|
119272
119593
|
value: ({
|
|
119594
|
+
/**
|
|
119595
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119596
|
+
*/
|
|
119273
119597
|
source: "revenue";
|
|
119274
119598
|
} | {
|
|
119599
|
+
/**
|
|
119600
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119601
|
+
*/
|
|
119275
119602
|
source: "dynamic";
|
|
119276
119603
|
} | {
|
|
119604
|
+
/**
|
|
119605
|
+
* Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
|
|
119606
|
+
*/
|
|
119277
119607
|
source: "fixed";
|
|
119608
|
+
/**
|
|
119609
|
+
* ISO-4217 currency the fixed amount is denominated in, e.g. USD
|
|
119610
|
+
*/
|
|
119278
119611
|
currency: string;
|
|
119612
|
+
/**
|
|
119613
|
+
* The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
|
|
119614
|
+
*/
|
|
119279
119615
|
amountMinor: number;
|
|
119280
119616
|
});
|
|
119617
|
+
/**
|
|
119618
|
+
* Whether this single mapping is live; a disabled rule is kept but uploads nothing
|
|
119619
|
+
*/
|
|
119281
119620
|
enabled: boolean;
|
|
119621
|
+
/**
|
|
119622
|
+
* Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
|
|
119623
|
+
*/
|
|
119282
119624
|
conversionAction: string;
|
|
119283
119625
|
}[];
|
|
119626
|
+
/**
|
|
119627
|
+
* Master switch: with it off no rule uploads anything, however the individual rules are set
|
|
119628
|
+
*/
|
|
119284
119629
|
enabled: boolean;
|
|
119630
|
+
/**
|
|
119631
|
+
* Product this conversion-feedback config belongs to
|
|
119632
|
+
*/
|
|
119285
119633
|
productId: string;
|
|
119634
|
+
/**
|
|
119635
|
+
* How many days back a click may have happened and still be matched to a conversion (max 90)
|
|
119636
|
+
*/
|
|
119286
119637
|
lookbackDays: number;
|
|
119638
|
+
/**
|
|
119639
|
+
* The connected Google Ads account's currency, best-effort; null or absent when it could not be read
|
|
119640
|
+
*/
|
|
119287
119641
|
accountCurrency?: (string | null);
|
|
119642
|
+
/**
|
|
119643
|
+
* Whether hashed email and phone are sent alongside gclid as additional match keys, which raises match rates
|
|
119644
|
+
*/
|
|
119288
119645
|
enhancedConversions: boolean;
|
|
119289
119646
|
};
|
|
119647
|
+
/**
|
|
119648
|
+
* Plain-language safety notes about what this combination of mode and match keys will do to the connected account
|
|
119649
|
+
*/
|
|
119290
119650
|
guidance: string[];
|
|
119291
119651
|
}
|
|
119292
119652
|
export interface TrackingGoogleadsFeedbackRunInput {
|
|
119293
119653
|
}
|
|
119294
119654
|
export interface TrackingGoogleadsFeedbackRunOutput {
|
|
119655
|
+
/**
|
|
119656
|
+
* This one upload pass. Match the completion event back to this step on it, not on productId: the daily cron pass and a manual run on the same day are two passes of the same product.
|
|
119657
|
+
*/
|
|
119658
|
+
runId: string;
|
|
119659
|
+
/**
|
|
119660
|
+
* Rows Google rejected in this pass.
|
|
119661
|
+
*/
|
|
119295
119662
|
failed: number;
|
|
119663
|
+
/**
|
|
119664
|
+
* Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
|
|
119665
|
+
*/
|
|
119296
119666
|
matched: number;
|
|
119667
|
+
/**
|
|
119668
|
+
* Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
|
|
119669
|
+
*/
|
|
119297
119670
|
noGclid: number;
|
|
119671
|
+
/**
|
|
119672
|
+
* Present only when the pass did no work, and says why: feedback is switched off, no rule is enabled, or no Google Ads account is connected. Absent on a pass that ran.
|
|
119673
|
+
*/
|
|
119298
119674
|
skipped?: ("disabled" | "no_rules" | "not_connected");
|
|
119675
|
+
/**
|
|
119676
|
+
* Conversions in the lookback window that an enabled rule applied to.
|
|
119677
|
+
*/
|
|
119299
119678
|
selected: number;
|
|
119679
|
+
/**
|
|
119680
|
+
* Rows Google accepted in this pass.
|
|
119681
|
+
*/
|
|
119300
119682
|
uploaded: number;
|
|
119301
|
-
|
|
119683
|
+
/**
|
|
119684
|
+
* The tenant whose conversions this pass uploaded.
|
|
119685
|
+
*/
|
|
119686
|
+
productId: string;
|
|
119687
|
+
/**
|
|
119688
|
+
* Conversions held back because their money value had not landed yet. They are retried on a later pass.
|
|
119689
|
+
*/
|
|
119302
119690
|
zeroValue: number;
|
|
119303
|
-
|
|
119691
|
+
/**
|
|
119692
|
+
* Google's own rejection detail, passed through unchanged, when it refused part of the batch. Absent when it accepted everything.
|
|
119693
|
+
*/
|
|
119694
|
+
partialFailureError?: {
|
|
119695
|
+
[k: string]: unknown;
|
|
119696
|
+
};
|
|
119304
119697
|
}
|
|
119305
119698
|
export interface TrackingGoogleadsFeedbackStatusInput {
|
|
119306
119699
|
}
|
|
119307
119700
|
export interface TrackingGoogleadsFeedbackStatusOutput {
|
|
119701
|
+
/**
|
|
119702
|
+
* How the uploads coexist with the account's own tag: existing_pixel means the Google tag also records these conversions; fresh_pixel means these uploads are the only source.
|
|
119703
|
+
*/
|
|
119308
119704
|
mode: ("existing_pixel" | "fresh_pixel");
|
|
119705
|
+
/**
|
|
119706
|
+
* Rows Google has rejected since this product was connected, across every pass.
|
|
119707
|
+
*/
|
|
119309
119708
|
failed: number;
|
|
119709
|
+
/**
|
|
119710
|
+
* Whether conversions are being sent to Google Ads at all.
|
|
119711
|
+
*/
|
|
119310
119712
|
enabled: boolean;
|
|
119713
|
+
/**
|
|
119714
|
+
* Coverage of the most recent pass. Null when no pass has run for this product yet.
|
|
119715
|
+
*/
|
|
119311
119716
|
lastRun: ({
|
|
119717
|
+
/**
|
|
119718
|
+
* When the last pass finished. Null when the stored summary predates this field.
|
|
119719
|
+
*/
|
|
119312
119720
|
ranAt: (string | null);
|
|
119721
|
+
/**
|
|
119722
|
+
* Rows Google rejected. Anything above zero is what makes the status partial.
|
|
119723
|
+
*/
|
|
119313
119724
|
failed: number;
|
|
119725
|
+
/**
|
|
119726
|
+
* How the pass ended: ok is a clean pass, partial means Google rejected some rows and accepted others, not_connected means no Google Ads account was reachable and nothing was sent.
|
|
119727
|
+
*/
|
|
119314
119728
|
status: ("ok" | "partial" | "not_connected");
|
|
119729
|
+
/**
|
|
119730
|
+
* Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
|
|
119731
|
+
*/
|
|
119315
119732
|
matched: number;
|
|
119733
|
+
/**
|
|
119734
|
+
* Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
|
|
119735
|
+
*/
|
|
119316
119736
|
noGclid: number;
|
|
119737
|
+
/**
|
|
119738
|
+
* Conversions in the lookback window that an enabled rule applied to.
|
|
119739
|
+
*/
|
|
119317
119740
|
selected: number;
|
|
119741
|
+
/**
|
|
119742
|
+
* Rows Google accepted.
|
|
119743
|
+
*/
|
|
119318
119744
|
uploaded: number;
|
|
119745
|
+
/**
|
|
119746
|
+
* Conversions held back because their money value had not landed yet. They are retried on a later pass.
|
|
119747
|
+
*/
|
|
119319
119748
|
zeroValue: number;
|
|
119320
119749
|
} | null);
|
|
119750
|
+
/**
|
|
119751
|
+
* Plain-language warnings about the current setup, such as double counting when the Google tag already records the same conversion. Empty when nothing needs saying.
|
|
119752
|
+
*/
|
|
119321
119753
|
guidance: string[];
|
|
119754
|
+
/**
|
|
119755
|
+
* Rows Google has accepted since this product was connected, across every pass.
|
|
119756
|
+
*/
|
|
119322
119757
|
uploaded: number;
|
|
119758
|
+
/**
|
|
119759
|
+
* How many event-to-conversion-action rules are configured, enabled or not.
|
|
119760
|
+
*/
|
|
119323
119761
|
ruleCount: number;
|
|
119762
|
+
/**
|
|
119763
|
+
* How many days back each pass looks for conversions to send, and how far back a click may be matched.
|
|
119764
|
+
*/
|
|
119324
119765
|
lookbackDays: number;
|
|
119766
|
+
/**
|
|
119767
|
+
* Currency of the connected Google Ads account, as a three-letter ISO 4217 code such as EUR. Null when the account could not be read.
|
|
119768
|
+
*/
|
|
119325
119769
|
accountCurrency: (string | null);
|
|
119770
|
+
/**
|
|
119771
|
+
* The event names that may use the Dynamic value source, because revenue is known for them.
|
|
119772
|
+
*/
|
|
119326
119773
|
dynamicValueEvents: string[];
|
|
119774
|
+
/**
|
|
119775
|
+
* Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
|
|
119776
|
+
*/
|
|
119327
119777
|
enhancedConversions: boolean;
|
|
119328
119778
|
}
|
|
119329
119779
|
export interface TrackingGoogleadsFeedbackUploadsInput {
|
|
@@ -119342,84 +119792,293 @@ export type TrackingGoogleadsFeedbackUploadsOutput = {
|
|
|
119342
119792
|
conversionDatetime: string;
|
|
119343
119793
|
}[];
|
|
119344
119794
|
export interface TrackingGoogleadsRoasReportInput {
|
|
119345
|
-
|
|
119346
|
-
|
|
119795
|
+
/**
|
|
119796
|
+
* End of the reporting window, inclusive. ISO-8601 date or timestamp; a date-only value covers that whole day, so revenue after midnight is not cut off. Omit to end now.
|
|
119797
|
+
*/
|
|
119798
|
+
to?: string;
|
|
119799
|
+
/**
|
|
119800
|
+
* Start of the reporting window, inclusive. ISO-8601 date or timestamp, e.g. 2026-01-01. Omit to start 30 days before the end of the window.
|
|
119801
|
+
*/
|
|
119802
|
+
from?: string;
|
|
119803
|
+
/**
|
|
119804
|
+
* Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
|
|
119805
|
+
*/
|
|
119347
119806
|
model?: ("last_click" | "first_click");
|
|
119807
|
+
/**
|
|
119808
|
+
* Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
|
|
119809
|
+
*/
|
|
119348
119810
|
domain?: string;
|
|
119811
|
+
/**
|
|
119812
|
+
* Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
|
|
119813
|
+
*/
|
|
119349
119814
|
customerId?: string;
|
|
119815
|
+
/**
|
|
119816
|
+
* How far back before a conversion a paid click may sit and still earn the credit, in days. 1-365, silently clamped into that range; defaults to 30.
|
|
119817
|
+
*/
|
|
119350
119818
|
lookbackDays?: number;
|
|
119351
119819
|
}
|
|
119352
119820
|
export interface TrackingGoogleadsRoasReportOutput {
|
|
119821
|
+
/**
|
|
119822
|
+
* End of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
|
|
119823
|
+
*/
|
|
119353
119824
|
to: string;
|
|
119825
|
+
/**
|
|
119826
|
+
* Start of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
|
|
119827
|
+
*/
|
|
119354
119828
|
from: string;
|
|
119829
|
+
/**
|
|
119830
|
+
* Which touchpoint earned the credit in these numbers: the last paid click before the conversion, or the first.
|
|
119831
|
+
*/
|
|
119355
119832
|
model: ("last_click" | "first_click");
|
|
119833
|
+
/**
|
|
119834
|
+
* True when any account below is running on cost older than the freshness threshold, or on no cost at all — read this before acting on the numbers.
|
|
119835
|
+
*/
|
|
119836
|
+
stale: boolean;
|
|
119837
|
+
/**
|
|
119838
|
+
* The installed site this report was restricted to; null when it covers every domain of the product.
|
|
119839
|
+
*/
|
|
119356
119840
|
domain: (string | null);
|
|
119841
|
+
/**
|
|
119842
|
+
* One entry per Google Ads account and currency. Kept apart on purpose: amounts in different currencies are never added together.
|
|
119843
|
+
*/
|
|
119357
119844
|
accounts: {
|
|
119845
|
+
/**
|
|
119846
|
+
* True when this account's cost is older than the freshness threshold, or was never pulled — the ROAS below is then built on outdated spend.
|
|
119847
|
+
*/
|
|
119358
119848
|
stale: boolean;
|
|
119849
|
+
/**
|
|
119850
|
+
* ISO-4217 code every amount under this account is expressed in, e.g. USD. One account appears once per currency its cost was booked in.
|
|
119851
|
+
*/
|
|
119359
119852
|
currency: string;
|
|
119853
|
+
/**
|
|
119854
|
+
* This account's campaigns, each with its ad groups and ads nested underneath.
|
|
119855
|
+
*/
|
|
119360
119856
|
campaigns: TrackingGoogleadsRoasReportOutputItems[];
|
|
119857
|
+
/**
|
|
119858
|
+
* Google Ads account these campaigns belong to, by customer id without dashes.
|
|
119859
|
+
*/
|
|
119361
119860
|
customerId: string;
|
|
119861
|
+
/**
|
|
119862
|
+
* When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
|
|
119863
|
+
*/
|
|
119362
119864
|
costLastSyncedAt: (string | null);
|
|
119363
119865
|
}[];
|
|
119866
|
+
/**
|
|
119867
|
+
* ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
|
|
119868
|
+
*/
|
|
119869
|
+
currency: (string | null);
|
|
119870
|
+
/**
|
|
119871
|
+
* When this report was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
|
|
119872
|
+
*/
|
|
119364
119873
|
computedAt: string;
|
|
119874
|
+
/**
|
|
119875
|
+
* Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
|
|
119876
|
+
*/
|
|
119877
|
+
customerId: (string | null);
|
|
119878
|
+
/**
|
|
119879
|
+
* How far back before a conversion a paid click was allowed to sit and still earn the credit, in days.
|
|
119880
|
+
*/
|
|
119365
119881
|
lookbackDays: number;
|
|
119882
|
+
/**
|
|
119883
|
+
* Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
|
|
119884
|
+
*/
|
|
119885
|
+
costLastSyncedAt: (string | null);
|
|
119886
|
+
/**
|
|
119887
|
+
* Revenue we tracked but could not tie to any Google Ads campaign, grouped by the utm_campaign we saw. A long list here means the ad tagging needs fixing, not that the ads failed.
|
|
119888
|
+
*/
|
|
119366
119889
|
unmatchedAttributed: {
|
|
119890
|
+
/**
|
|
119891
|
+
* Revenue that stayed outside every campaign, one row per currency. Never cross-summed.
|
|
119892
|
+
*/
|
|
119367
119893
|
revenue: TrackingGoogleadsRoasReportOutputItems1[];
|
|
119894
|
+
/**
|
|
119895
|
+
* How many distinct customers paid but could not be traced to any Google Ads campaign.
|
|
119896
|
+
*/
|
|
119368
119897
|
conversions: number;
|
|
119898
|
+
/**
|
|
119899
|
+
* The utm_campaign value we saw on the visit, which matched no Google Ads campaign; null when the visit carried none. This is the diagnostic: fix the tagging and the revenue moves into a campaign.
|
|
119900
|
+
*/
|
|
119369
119901
|
utmCampaign: (string | null);
|
|
119370
119902
|
}[];
|
|
119371
119903
|
}
|
|
119372
119904
|
export interface TrackingGoogleadsRoasReportOutputItems {
|
|
119905
|
+
/**
|
|
119906
|
+
* What one attributed customer cost: cost divided by attributed conversions, in minor units of the account currency. null when there were no attributed conversions.
|
|
119907
|
+
*/
|
|
119373
119908
|
cpa: (number | null);
|
|
119909
|
+
/**
|
|
119910
|
+
* Google Ads ad this node is, by its numeric id; null on a campaign or ad group node.
|
|
119911
|
+
*/
|
|
119374
119912
|
adId: (string | null);
|
|
119913
|
+
/**
|
|
119914
|
+
* What Google charged and what Google itself counted for this node over the window.
|
|
119915
|
+
*/
|
|
119375
119916
|
cost: {
|
|
119917
|
+
/**
|
|
119918
|
+
* How many times someone clicked through from Google over the window.
|
|
119919
|
+
*/
|
|
119376
119920
|
clicks: number;
|
|
119921
|
+
/**
|
|
119922
|
+
* ISO-4217 code of the Google Ads account these numbers come from, e.g. USD. Fixed per account.
|
|
119923
|
+
*/
|
|
119377
119924
|
currency: string;
|
|
119925
|
+
/**
|
|
119926
|
+
* What Google charged for this campaign, ad group or ad over the window, in minor units (1250 = 12.50).
|
|
119927
|
+
*/
|
|
119378
119928
|
costMinor: number;
|
|
119929
|
+
/**
|
|
119930
|
+
* How many times Google showed this ad over the window.
|
|
119931
|
+
*/
|
|
119379
119932
|
impressions: number;
|
|
119933
|
+
/**
|
|
119934
|
+
* Conversions GOOGLE counted for this node — its own attribution, not ours. May be fractional, because Google splits credit across touchpoints.
|
|
119935
|
+
*/
|
|
119380
119936
|
platformConversions: number;
|
|
119937
|
+
/**
|
|
119938
|
+
* Conversion value GOOGLE reports for this node, in minor units of the account currency. Compare it with our attributed revenue; the two rarely agree.
|
|
119939
|
+
*/
|
|
119381
119940
|
platformConversionsValueMinor: number;
|
|
119382
119941
|
};
|
|
119942
|
+
/**
|
|
119943
|
+
* What this campaign, ad group or ad is called in Google Ads; null when the name has not been synced.
|
|
119944
|
+
*/
|
|
119383
119945
|
name: (string | null);
|
|
119946
|
+
/**
|
|
119947
|
+
* Return on ad spend: our net attributed revenue divided by cost, both in the account currency. A plain ratio, not a percentage — 2.4 means 2.40 back per 1.00 spent. null when cost is 0 or nothing was attributed.
|
|
119948
|
+
*/
|
|
119384
119949
|
roas: (number | null);
|
|
119950
|
+
/**
|
|
119951
|
+
* How deep in the Google Ads hierarchy this node sits. Attributed revenue, ROAS and CPA exist at campaign level only; cost exists at all three.
|
|
119952
|
+
*/
|
|
119385
119953
|
level: ("campaign" | "ad_group" | "ad");
|
|
119954
|
+
/**
|
|
119955
|
+
* Google Ads campaign state, passed through raw: ENABLED, PAUSED, REMOVED. Present on campaign nodes only — the key is absent below.
|
|
119956
|
+
*/
|
|
119386
119957
|
status?: string;
|
|
119958
|
+
/**
|
|
119959
|
+
* The level below this one: ad groups under a campaign, ads under an ad group, empty on an ad.
|
|
119960
|
+
*/
|
|
119387
119961
|
children: TrackingGoogleadsRoasReportOutputItems[];
|
|
119962
|
+
/**
|
|
119963
|
+
* Google Ads ad group this node belongs to, by its numeric id; null on a campaign node.
|
|
119964
|
+
*/
|
|
119388
119965
|
adGroupId: (string | null);
|
|
119966
|
+
/**
|
|
119967
|
+
* What WE traced back to this node from our own tracking. null below campaign level, and null on a campaign nothing was traced to.
|
|
119968
|
+
*/
|
|
119389
119969
|
attributed: ({
|
|
119970
|
+
/**
|
|
119971
|
+
* What WE traced back to this campaign, one row per currency the customers paid in. Never cross-summed — use accountCurrencyNetMinor for a single figure.
|
|
119972
|
+
*/
|
|
119390
119973
|
revenue: TrackingGoogleadsRoasReportOutputItems1[];
|
|
119391
|
-
|
|
119974
|
+
/**
|
|
119975
|
+
* Which key actually joined this revenue to the Google campaign, strongest first: lt_campaign_id (the id our own tracking template stamps on the landing URL), campaign_id (the id inside utm_campaign), campaign_name (the campaign name inside utm_campaign, a guess), gclid (the click id). null means the join key is unknown; treat campaign_name as the weakest evidence.
|
|
119976
|
+
*/
|
|
119977
|
+
matchedBy: (("lt_campaign_id" | "campaign_id" | "campaign_name" | "gclid") | null);
|
|
119978
|
+
/**
|
|
119979
|
+
* How many distinct customers we traced back to this campaign over the window. Whole numbers: we give a conversion to one campaign, we never split it.
|
|
119980
|
+
*/
|
|
119392
119981
|
conversions: number;
|
|
119982
|
+
/**
|
|
119983
|
+
* Our net attributed revenue in the account currency alone, in minor units. 0 when nobody paid in that currency. This is the ROAS numerator, and the single-value answer beside the revenue list.
|
|
119984
|
+
*/
|
|
119393
119985
|
accountCurrencyNetMinor: number;
|
|
119394
119986
|
} | null);
|
|
119987
|
+
/**
|
|
119988
|
+
* Google Ads campaign this node belongs to, by its numeric id. Set at every level.
|
|
119989
|
+
*/
|
|
119395
119990
|
campaignId: string;
|
|
119991
|
+
/**
|
|
119992
|
+
* Google Ads account this node belongs to, by customer id without dashes.
|
|
119993
|
+
*/
|
|
119396
119994
|
customerId: string;
|
|
119995
|
+
/**
|
|
119996
|
+
* Where Google ran the campaign, passed through raw: SEARCH, DISPLAY, VIDEO, PERFORMANCE_MAX and so on. Present on campaign nodes only, and may be null there.
|
|
119997
|
+
*/
|
|
119397
119998
|
channelType?: (string | null);
|
|
119398
119999
|
}
|
|
119399
120000
|
export interface TrackingGoogleadsRoasReportOutputItems1 {
|
|
120001
|
+
/**
|
|
120002
|
+
* ISO-4217 code the three amounts on this row are denominated in, e.g. USD. One row per currency; rows are never added together.
|
|
120003
|
+
*/
|
|
119400
120004
|
currency: string;
|
|
120005
|
+
/**
|
|
120006
|
+
* Money kept after refunds (gross minus refunded), in minor units of this row's currency. This is what ROAS is calculated from.
|
|
120007
|
+
*/
|
|
119401
120008
|
netMinor: number;
|
|
120009
|
+
/**
|
|
120010
|
+
* Money taken before refunds, in minor units of this row's currency (1250 = 12.50).
|
|
120011
|
+
*/
|
|
119402
120012
|
grossMinor: number;
|
|
120013
|
+
/**
|
|
120014
|
+
* Money given back within the window, in minor units of this row's currency; already subtracted from netMinor.
|
|
120015
|
+
*/
|
|
119403
120016
|
refundedMinor: number;
|
|
119404
120017
|
}
|
|
119405
120018
|
export interface TrackingGoogleadsSyncNowInput {
|
|
119406
120019
|
}
|
|
119407
120020
|
export interface TrackingGoogleadsSyncNowOutput {
|
|
120021
|
+
/**
|
|
120022
|
+
* How much this sweep wrote, split by what it wrote. Re-running the same window updates rows in place rather than adding, so these are rows touched, not rows gained. All zero when the status is skipped.
|
|
120023
|
+
*/
|
|
119408
120024
|
rows: {
|
|
120025
|
+
/**
|
|
120026
|
+
* Ads written.
|
|
120027
|
+
*/
|
|
119409
120028
|
ads: number;
|
|
120029
|
+
/**
|
|
120030
|
+
* Day-by-day ad spend and metric rows written.
|
|
120031
|
+
*/
|
|
119410
120032
|
adDaily: number;
|
|
120033
|
+
/**
|
|
120034
|
+
* Ad groups written.
|
|
120035
|
+
*/
|
|
119411
120036
|
adGroups: number;
|
|
120037
|
+
/**
|
|
120038
|
+
* Campaigns written, names and status included.
|
|
120039
|
+
*/
|
|
119412
120040
|
campaigns: number;
|
|
120041
|
+
/**
|
|
120042
|
+
* Day-by-day ad-group spend and metric rows written.
|
|
120043
|
+
*/
|
|
119413
120044
|
adGroupDaily: number;
|
|
120045
|
+
/**
|
|
120046
|
+
* Day-by-day campaign spend and metric rows written.
|
|
120047
|
+
*/
|
|
119414
120048
|
campaignDaily: number;
|
|
119415
120049
|
};
|
|
120050
|
+
/**
|
|
120051
|
+
* This one sync run. Match the completion event back to this step on it, not on productId: a product syncs many times, and the daily cron run and a manual one are different runs.
|
|
120052
|
+
*/
|
|
120053
|
+
runId: string;
|
|
120054
|
+
/**
|
|
120055
|
+
* Why nothing was written, when the status is skipped: the account is not chosen yet, the authorisation expired, or Google was unavailable. Absent on a sweep that ran.
|
|
120056
|
+
*/
|
|
119416
120057
|
reason?: string;
|
|
120058
|
+
/**
|
|
120059
|
+
* Whether the sweep ran. skipped means the Google Ads account could not be reached and nothing at all was written.
|
|
120060
|
+
*/
|
|
119417
120061
|
status: ("ok" | "skipped");
|
|
120062
|
+
/**
|
|
120063
|
+
* The range of days this sweep read spend and metrics for.
|
|
120064
|
+
*/
|
|
119418
120065
|
window: {
|
|
120066
|
+
/**
|
|
120067
|
+
* Last day covered, inclusive, as YYYY-MM-DD.
|
|
120068
|
+
*/
|
|
119419
120069
|
end: string;
|
|
120070
|
+
/**
|
|
120071
|
+
* First day covered, inclusive, as YYYY-MM-DD.
|
|
120072
|
+
*/
|
|
119420
120073
|
start: string;
|
|
119421
120074
|
};
|
|
120075
|
+
/**
|
|
120076
|
+
* The tenant whose Google Ads account was swept.
|
|
120077
|
+
*/
|
|
119422
120078
|
productId: string;
|
|
120079
|
+
/**
|
|
120080
|
+
* When the sweep finished. Null when nothing was written.
|
|
120081
|
+
*/
|
|
119423
120082
|
lastSyncedAt: (string | null);
|
|
119424
120083
|
}
|
|
119425
120084
|
export interface TrackingGoogleadsTrackingHealthInput {
|
|
@@ -119433,61 +120092,212 @@ export interface TrackingGoogleadsTrackingHealthInput {
|
|
|
119433
120092
|
from?: string;
|
|
119434
120093
|
}
|
|
119435
120094
|
export interface TrackingGoogleadsTrackingHealthOutput {
|
|
120095
|
+
/**
|
|
120096
|
+
* End of the range these figures cover, as an instant.
|
|
120097
|
+
*/
|
|
119436
120098
|
to: string;
|
|
120099
|
+
/**
|
|
120100
|
+
* Start of the range these figures cover, as an instant. Echoes back the range that was asked for.
|
|
120101
|
+
*/
|
|
119437
120102
|
from: string;
|
|
120103
|
+
/**
|
|
120104
|
+
* Whether the tracking template has been seen working live: true once at least one tagged click has arrived.
|
|
120105
|
+
*/
|
|
119438
120106
|
installed: boolean;
|
|
120107
|
+
/**
|
|
120108
|
+
* Whether the sample above was cut short. True means more untagged URLs exist than are listed.
|
|
120109
|
+
*/
|
|
119439
120110
|
truncated: boolean;
|
|
120111
|
+
/**
|
|
120112
|
+
* Google paid clicks that arrived on the site in this range. The denominator for everything below.
|
|
120113
|
+
*/
|
|
119440
120114
|
paidClicks: number;
|
|
120115
|
+
/**
|
|
120116
|
+
* How complete the figures above are. Holds no metric of its own — it exists so the breakage rate is not read as one uniform population.
|
|
120117
|
+
*/
|
|
119441
120118
|
dataQuality: {
|
|
120119
|
+
/**
|
|
120120
|
+
* Paid clicks from visitors who declined consent. Counted inside paidClicks, never added to it — a cookieless click is a real click. Clicks from sites running no consent banner are not counted here: nobody was asked, which is not the same as being told no.
|
|
120121
|
+
*/
|
|
119442
120122
|
cookielessPaidClicks: number;
|
|
119443
120123
|
};
|
|
120124
|
+
/**
|
|
120125
|
+
* Share of paid clicks that arrived untagged, between 0 and 1. Anything much above zero means the tracking template needs fixing.
|
|
120126
|
+
*/
|
|
119444
120127
|
breakageRate: number;
|
|
120128
|
+
/**
|
|
120129
|
+
* Of those, the ones that arrived carrying our URL tracking parameters, so the campaign behind them is known.
|
|
120130
|
+
*/
|
|
119445
120131
|
taggedClicks: number;
|
|
120132
|
+
/**
|
|
120133
|
+
* When the most recent untagged click arrived. Close to now means the breakage is still live. Null when none did.
|
|
120134
|
+
*/
|
|
119446
120135
|
lastUntaggedAt: (string | null);
|
|
120136
|
+
/**
|
|
120137
|
+
* Of those, the ones that arrived without our parameters, so the money spent on them cannot be attributed. This is what the tracking template being missing or broken looks like.
|
|
120138
|
+
*/
|
|
119447
120139
|
untaggedClicks: number;
|
|
120140
|
+
/**
|
|
120141
|
+
* When the first untagged click of the range arrived — roughly when the breakage started. Null when none did.
|
|
120142
|
+
*/
|
|
119448
120143
|
firstUntaggedAt: (string | null);
|
|
120144
|
+
/**
|
|
120145
|
+
* A handful of the actual landing URLs that arrived untagged, to paste into a browser while fixing the template. Real customer URLs, query strings included.
|
|
120146
|
+
*/
|
|
119449
120147
|
sampleUntaggedUrls: string[];
|
|
119450
120148
|
}
|
|
119451
120149
|
export interface TrackingGoogleadsUsVsPlatformInput {
|
|
119452
|
-
|
|
119453
|
-
|
|
120150
|
+
/**
|
|
120151
|
+
* End of the reporting window, inclusive. ISO-8601 date or timestamp; a date-only value covers that whole day, so revenue after midnight is not cut off. Omit to end now.
|
|
120152
|
+
*/
|
|
120153
|
+
to?: string;
|
|
120154
|
+
/**
|
|
120155
|
+
* Start of the reporting window, inclusive. ISO-8601 date or timestamp, e.g. 2026-01-01. Omit to start 30 days before the end of the window.
|
|
120156
|
+
*/
|
|
120157
|
+
from?: string;
|
|
120158
|
+
/**
|
|
120159
|
+
* Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
|
|
120160
|
+
*/
|
|
119454
120161
|
model?: ("last_click" | "first_click");
|
|
120162
|
+
/**
|
|
120163
|
+
* Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
|
|
120164
|
+
*/
|
|
119455
120165
|
domain?: string;
|
|
120166
|
+
/**
|
|
120167
|
+
* Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
|
|
120168
|
+
*/
|
|
119456
120169
|
customerId?: string;
|
|
120170
|
+
/**
|
|
120171
|
+
* How far back before a conversion a paid click may sit and still earn the credit, in days. 1-365, silently clamped into that range; defaults to 30.
|
|
120172
|
+
*/
|
|
119457
120173
|
lookbackDays?: number;
|
|
119458
120174
|
}
|
|
119459
120175
|
export interface TrackingGoogleadsUsVsPlatformOutput {
|
|
120176
|
+
/**
|
|
120177
|
+
* End of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
|
|
120178
|
+
*/
|
|
119460
120179
|
to: string;
|
|
120180
|
+
/**
|
|
120181
|
+
* Start of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
|
|
120182
|
+
*/
|
|
119461
120183
|
from: string;
|
|
120184
|
+
/**
|
|
120185
|
+
* Which touchpoint earned the credit on OUR side of the comparison: the last paid click before the conversion, or the first. Google always uses its own model.
|
|
120186
|
+
*/
|
|
119462
120187
|
model: ("last_click" | "first_click");
|
|
120188
|
+
/**
|
|
120189
|
+
* True when any account below is running on cost older than the freshness threshold, or on no cost at all — read this before acting on the numbers.
|
|
120190
|
+
*/
|
|
120191
|
+
stale: boolean;
|
|
120192
|
+
/**
|
|
120193
|
+
* The installed site this comparison was restricted to; null when it covers every domain of the product.
|
|
120194
|
+
*/
|
|
119463
120195
|
domain: (string | null);
|
|
120196
|
+
/**
|
|
120197
|
+
* One entry per Google Ads account and currency, each holding its per-campaign comparison rows. Currencies are never added together.
|
|
120198
|
+
*/
|
|
119464
120199
|
accounts: {
|
|
120200
|
+
/**
|
|
120201
|
+
* One row per campaign in this account, ours beside Google's.
|
|
120202
|
+
*/
|
|
119465
120203
|
rows: {
|
|
120204
|
+
/**
|
|
120205
|
+
* What this campaign is called in Google Ads; null when the name has not been synced.
|
|
120206
|
+
*/
|
|
119466
120207
|
name: (string | null);
|
|
120208
|
+
/**
|
|
120209
|
+
* ISO-4217 code both sides of this comparison are expressed in, e.g. USD. Ours and Google's are never converted.
|
|
120210
|
+
*/
|
|
119467
120211
|
currency: string;
|
|
120212
|
+
/**
|
|
120213
|
+
* The Google Ads campaign this row compares, by its numeric id.
|
|
120214
|
+
*/
|
|
119468
120215
|
campaignId: string;
|
|
120216
|
+
/**
|
|
120217
|
+
* Google Ads account this campaign belongs to, by customer id without dashes.
|
|
120218
|
+
*/
|
|
119469
120219
|
customerId: string;
|
|
120220
|
+
/**
|
|
120221
|
+
* How many distinct customers WE traced to this campaign. A whole number: we never split a customer across campaigns.
|
|
120222
|
+
*/
|
|
119470
120223
|
ourConversions: number;
|
|
119471
|
-
|
|
120224
|
+
/**
|
|
120225
|
+
* Net revenue WE traced to this campaign, in minor units of the account currency (1250 = 12.50). 0 when we traced none.
|
|
120226
|
+
*/
|
|
120227
|
+
ourRevenueNetMinor: number;
|
|
120228
|
+
/**
|
|
120229
|
+
* Conversions GOOGLE counted for the same campaign. May be fractional, because Google splits credit across touchpoints — which is the usual reason the two sides disagree.
|
|
120230
|
+
*/
|
|
119472
120231
|
platformConversions: number;
|
|
120232
|
+
/**
|
|
120233
|
+
* Conversion value GOOGLE reports for the same campaign, in minor units of the account currency. The counterpart of ourRevenueNetMinor.
|
|
120234
|
+
*/
|
|
119473
120235
|
platformConversionsValueMinor: number;
|
|
119474
120236
|
}[];
|
|
120237
|
+
/**
|
|
120238
|
+
* True when this account's Google-side numbers are older than the freshness threshold, or were never pulled — the comparison is then unfair to one side.
|
|
120239
|
+
*/
|
|
119475
120240
|
stale: boolean;
|
|
120241
|
+
/**
|
|
120242
|
+
* ISO-4217 code every amount under this account is expressed in, e.g. USD. One account appears once per currency its cost was booked in.
|
|
120243
|
+
*/
|
|
119476
120244
|
currency: string;
|
|
120245
|
+
/**
|
|
120246
|
+
* Google Ads account these comparison rows belong to, by customer id without dashes.
|
|
120247
|
+
*/
|
|
119477
120248
|
customerId: string;
|
|
120249
|
+
/**
|
|
120250
|
+
* When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
|
|
120251
|
+
*/
|
|
119478
120252
|
costLastSyncedAt: (string | null);
|
|
119479
120253
|
}[];
|
|
120254
|
+
/**
|
|
120255
|
+
* ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
|
|
120256
|
+
*/
|
|
120257
|
+
currency: (string | null);
|
|
120258
|
+
/**
|
|
120259
|
+
* When this comparison was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
|
|
120260
|
+
*/
|
|
119480
120261
|
computedAt: string;
|
|
120262
|
+
/**
|
|
120263
|
+
* Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
|
|
120264
|
+
*/
|
|
120265
|
+
customerId: (string | null);
|
|
120266
|
+
/**
|
|
120267
|
+
* How far back before a conversion a paid click was allowed to sit and still earn the credit on our side, in days.
|
|
120268
|
+
*/
|
|
119481
120269
|
lookbackDays: number;
|
|
120270
|
+
/**
|
|
120271
|
+
* Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
|
|
120272
|
+
*/
|
|
120273
|
+
costLastSyncedAt: (string | null);
|
|
119482
120274
|
}
|
|
119483
120275
|
export interface TrackingIdentityHealthInput {
|
|
119484
120276
|
}
|
|
119485
120277
|
export interface TrackingIdentityHealthOutput {
|
|
120278
|
+
/**
|
|
120279
|
+
* When these numbers were computed, ISO 8601 UTC. They are a live count, so this is effectively the moment of the call.
|
|
120280
|
+
*/
|
|
119486
120281
|
computedAt: string;
|
|
120282
|
+
/**
|
|
120283
|
+
* How many people the product holds in total, anonymous ones included. The denominator of both rates below.
|
|
120284
|
+
*/
|
|
119487
120285
|
totalProfiles: number;
|
|
120286
|
+
/**
|
|
120287
|
+
* Identified people as a share of the total, normally 0 to 1 (0.42 is 42%). A drop here usually means a broken identify() call, not fewer visitors.
|
|
120288
|
+
*/
|
|
119488
120289
|
identifiedRate: number;
|
|
120290
|
+
/**
|
|
120291
|
+
* People with an ad touchpoint as a share of the total, normally 0 to 1. It counts click-id identifiers, so an identifier outliving its profile can push it just above 1 — read it as an indicator, not as a proportion to assert on.
|
|
120292
|
+
*/
|
|
119489
120293
|
adTouchpointRate: number;
|
|
120294
|
+
/**
|
|
120295
|
+
* How many of them an email or phone is known for — the people a message can actually be sent to.
|
|
120296
|
+
*/
|
|
119490
120297
|
identifiedProfiles: number;
|
|
120298
|
+
/**
|
|
120299
|
+
* How many people arrived carrying an ad click id. A proxy for paid reach: it counts anyone with at least one click id on record.
|
|
120300
|
+
*/
|
|
119491
120301
|
adTouchpointProfiles: number;
|
|
119492
120302
|
}
|
|
119493
120303
|
export interface TrackingInstallDomainsCreateInput {
|
|
@@ -119497,6 +120307,9 @@ export interface TrackingInstallDomainsCreateInput {
|
|
|
119497
120307
|
domain: string;
|
|
119498
120308
|
}
|
|
119499
120309
|
export interface TrackingInstallDomainsCreateOutput {
|
|
120310
|
+
/**
|
|
120311
|
+
* The domain as stored after normalisation, which may differ from what was submitted
|
|
120312
|
+
*/
|
|
119500
120313
|
domain: string;
|
|
119501
120314
|
}
|
|
119502
120315
|
export interface TrackingInstallDomainsDeleteInput {
|
|
@@ -119506,19 +120319,43 @@ export interface TrackingInstallDomainsDeleteInput {
|
|
|
119506
120319
|
domain: string;
|
|
119507
120320
|
}
|
|
119508
120321
|
export interface TrackingInstallDomainsDeleteOutput {
|
|
120322
|
+
/**
|
|
120323
|
+
* Always true — the domain was removed; a failure arrives as an error, not as false
|
|
120324
|
+
*/
|
|
119509
120325
|
ok: true;
|
|
119510
120326
|
}
|
|
119511
120327
|
export interface TrackingInstallDomainsListInput {
|
|
119512
120328
|
}
|
|
119513
120329
|
export interface TrackingInstallDomainsListOutput {
|
|
120330
|
+
/**
|
|
120331
|
+
* Domains sending events that nobody registered — usually a staging host, a typo, or an install worth adding
|
|
120332
|
+
*/
|
|
119514
120333
|
discovered: TrackingInstallDomainsListOutputItems[];
|
|
120334
|
+
/**
|
|
120335
|
+
* Domains deliberately put on the install checklist, each with whether its script has been seen
|
|
120336
|
+
*/
|
|
119515
120337
|
registered: TrackingInstallDomainsListOutputItems[];
|
|
120338
|
+
/**
|
|
120339
|
+
* Length in days of the lookback window the `seen` and `lastSeen` figures are measured over
|
|
120340
|
+
*/
|
|
119516
120341
|
windowDays: number;
|
|
119517
120342
|
}
|
|
119518
120343
|
export interface TrackingInstallDomainsListOutputItems {
|
|
120344
|
+
/**
|
|
120345
|
+
* Whether the tracking script actually sent an event from this domain inside the lookback window
|
|
120346
|
+
*/
|
|
119519
120347
|
seen: boolean;
|
|
120348
|
+
/**
|
|
120349
|
+
* Normalised domain name the status is reported for
|
|
120350
|
+
*/
|
|
119520
120351
|
domain: string;
|
|
120352
|
+
/**
|
|
120353
|
+
* ISO-8601 timestamp of the most recent event from this domain, or null if none arrived in the window
|
|
120354
|
+
*/
|
|
119521
120355
|
lastSeen: (string | null);
|
|
120356
|
+
/**
|
|
120357
|
+
* Whether the domain is on the install checklist on purpose, as opposed to merely observed sending events
|
|
120358
|
+
*/
|
|
119522
120359
|
registered: boolean;
|
|
119523
120360
|
}
|
|
119524
120361
|
export interface TrackingLinkDomainsCreateInput {
|
|
@@ -119528,6 +120365,9 @@ export interface TrackingLinkDomainsCreateInput {
|
|
|
119528
120365
|
domain: string;
|
|
119529
120366
|
}
|
|
119530
120367
|
export interface TrackingLinkDomainsCreateOutput {
|
|
120368
|
+
/**
|
|
120369
|
+
* The domain as stored after normalisation, which may differ from what was submitted
|
|
120370
|
+
*/
|
|
119531
120371
|
domain: string;
|
|
119532
120372
|
}
|
|
119533
120373
|
export interface TrackingLinkDomainsDeleteInput {
|
|
@@ -119537,11 +120377,17 @@ export interface TrackingLinkDomainsDeleteInput {
|
|
|
119537
120377
|
domain: string;
|
|
119538
120378
|
}
|
|
119539
120379
|
export interface TrackingLinkDomainsDeleteOutput {
|
|
120380
|
+
/**
|
|
120381
|
+
* Always true — the domain left the linking group; a failure arrives as an error, not as false
|
|
120382
|
+
*/
|
|
119540
120383
|
ok: true;
|
|
119541
120384
|
}
|
|
119542
120385
|
export interface TrackingLinkDomainsListInput {
|
|
119543
120386
|
}
|
|
119544
120387
|
export interface TrackingLinkDomainsListOutput {
|
|
120388
|
+
/**
|
|
120389
|
+
* Root domains in the linking group; the tracking script decorates links between any two of them so one visitor stays one visitor
|
|
120390
|
+
*/
|
|
119545
120391
|
domains: string[];
|
|
119546
120392
|
}
|
|
119547
120393
|
export interface TrackingLiveEventsListInput {
|
|
@@ -119559,22 +120405,70 @@ export interface TrackingLiveEventsListInput {
|
|
|
119559
120405
|
domain?: string;
|
|
119560
120406
|
}
|
|
119561
120407
|
export interface TrackingLiveEventsListOutput {
|
|
120408
|
+
/**
|
|
120409
|
+
* Pass back as `since` to fetch what arrived after this page. Null when there is nothing older to page into.
|
|
120410
|
+
*/
|
|
119562
120411
|
cursor: (string | null);
|
|
120412
|
+
/**
|
|
120413
|
+
* The page of events, newest first.
|
|
120414
|
+
*/
|
|
119563
120415
|
events: {
|
|
120416
|
+
/**
|
|
120417
|
+
* Stable identifier of this single event; unique within the product and safe to deduplicate on across polls.
|
|
120418
|
+
*/
|
|
119564
120419
|
id: string;
|
|
120420
|
+
/**
|
|
120421
|
+
* When the event happened, as reported by the tracker (ISO 8601, UTC).
|
|
120422
|
+
*/
|
|
119565
120423
|
ts: string;
|
|
120424
|
+
/**
|
|
120425
|
+
* Page address the event fired on, query string included. Free text from the customer site, so it can carry personal data.
|
|
120426
|
+
*/
|
|
119566
120427
|
url: (string | null);
|
|
120428
|
+
/**
|
|
120429
|
+
* Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
|
|
120430
|
+
*/
|
|
119567
120431
|
name: string;
|
|
120432
|
+
/**
|
|
120433
|
+
* Document title of that page at the time. Free text from the customer site, so it can carry personal data.
|
|
120434
|
+
*/
|
|
119568
120435
|
title: (string | null);
|
|
120436
|
+
/**
|
|
120437
|
+
* Site the event came from; null when the tracker could not determine one.
|
|
120438
|
+
*/
|
|
119569
120439
|
domain: (string | null);
|
|
120440
|
+
/**
|
|
120441
|
+
* Where this visit came from, as read off the landing URL and referrer. Every field is null when the visit carried nothing.
|
|
120442
|
+
*/
|
|
119570
120443
|
source: {
|
|
120444
|
+
/**
|
|
120445
|
+
* Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
|
|
120446
|
+
*/
|
|
119571
120447
|
referrer: (string | null);
|
|
120448
|
+
/**
|
|
120449
|
+
* utm_medium of the landing URL, e.g. cpc; null when absent.
|
|
120450
|
+
*/
|
|
119572
120451
|
utmMedium: (string | null);
|
|
120452
|
+
/**
|
|
120453
|
+
* utm_source of the landing URL, e.g. newsletter; null when absent.
|
|
120454
|
+
*/
|
|
119573
120455
|
utmSource: (string | null);
|
|
120456
|
+
/**
|
|
120457
|
+
* Which ad-network click id was present on the landing URL, e.g. 'gclid'. Null when the visit carried none.
|
|
120458
|
+
*/
|
|
119574
120459
|
clickIdType: (string | null);
|
|
120460
|
+
/**
|
|
120461
|
+
* utm_campaign of the landing URL; null when absent.
|
|
120462
|
+
*/
|
|
119575
120463
|
utmCampaign: (string | null);
|
|
119576
120464
|
};
|
|
120465
|
+
/**
|
|
120466
|
+
* Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
|
|
120467
|
+
*/
|
|
119577
120468
|
country: (string | null);
|
|
120469
|
+
/**
|
|
120470
|
+
* Pseudonymous visitor id the person graph joins on. Null for a visitor who declined statistics consent or was never asked — those events arrive cookieless and carry no identifier at all.
|
|
120471
|
+
*/
|
|
119578
120472
|
anonymousId: (string | null);
|
|
119579
120473
|
}[];
|
|
119580
120474
|
}
|
|
@@ -119585,18 +120479,52 @@ export interface TrackingProfilesDeleteInput {
|
|
|
119585
120479
|
profileId: string;
|
|
119586
120480
|
}
|
|
119587
120481
|
export interface TrackingProfilesDeleteOutput {
|
|
120482
|
+
/**
|
|
120483
|
+
* Always true: the response only exists when the erasure ran. A failure arrives as an error, not as ok=false.
|
|
120484
|
+
*/
|
|
119588
120485
|
ok: true;
|
|
120486
|
+
/**
|
|
120487
|
+
* What happened to the archived copy of the events. Postgres is erased synchronously; the archive is not, and this says so out loud.
|
|
120488
|
+
*/
|
|
119589
120489
|
archive: {
|
|
120490
|
+
/**
|
|
120491
|
+
* Plain-language reason the archived copy could not be deleted in the same breath — text meant to be quoted into a compliance record.
|
|
120492
|
+
*/
|
|
119590
120493
|
note: string;
|
|
120494
|
+
/**
|
|
120495
|
+
* Always gap_flagged: the archived copy is known to still hold this person and the gap has been recorded rather than silently ignored.
|
|
120496
|
+
*/
|
|
119591
120497
|
status: "gap_flagged";
|
|
119592
120498
|
};
|
|
120499
|
+
/**
|
|
120500
|
+
* How much was actually destroyed, by kind. Worth recording: it is the evidence that the erasure did something.
|
|
120501
|
+
*/
|
|
119593
120502
|
deleted: {
|
|
120503
|
+
/**
|
|
120504
|
+
* Tracked events removed, found through the anonymous ids this person browsed under.
|
|
120505
|
+
*/
|
|
119594
120506
|
events: number;
|
|
120507
|
+
/**
|
|
120508
|
+
* Merge records removed — the history of this person having been joined with another.
|
|
120509
|
+
*/
|
|
119595
120510
|
merges: number;
|
|
120511
|
+
/**
|
|
120512
|
+
* Profile rows removed: 1 in practice, and 0 only if the row vanished between the lookup and the delete.
|
|
120513
|
+
*/
|
|
119596
120514
|
profile: number;
|
|
120515
|
+
/**
|
|
120516
|
+
* Emails, phones, anonymous ids and click ids removed for this person.
|
|
120517
|
+
*/
|
|
119597
120518
|
identifiers: number;
|
|
119598
120519
|
};
|
|
120520
|
+
/**
|
|
120521
|
+
* The person who was erased. Nothing else of them remains, so this is all there is left to name them by.
|
|
120522
|
+
*/
|
|
119599
120523
|
profileId: string;
|
|
120524
|
+
/**
|
|
120525
|
+
* This erasure attempt. The completion event carries the same value under the same name, so a step recognises its own completion even when another workflow is erasing the same person at the same moment.
|
|
120526
|
+
*/
|
|
120527
|
+
requestId: string;
|
|
119600
120528
|
}
|
|
119601
120529
|
export interface TrackingProfilesExportInput {
|
|
119602
120530
|
/**
|
|
@@ -119605,52 +120533,172 @@ export interface TrackingProfilesExportInput {
|
|
|
119605
120533
|
profileId: string;
|
|
119606
120534
|
}
|
|
119607
120535
|
export interface TrackingProfilesExportOutput {
|
|
120536
|
+
/**
|
|
120537
|
+
* The complete history, newest event first, capped at 50000 events — check `truncated` before treating it as complete.
|
|
120538
|
+
*/
|
|
119608
120539
|
journey: {
|
|
120540
|
+
/**
|
|
120541
|
+
* When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
|
|
120542
|
+
*/
|
|
119609
120543
|
ts: string;
|
|
120544
|
+
/**
|
|
120545
|
+
* Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
|
|
120546
|
+
*/
|
|
119610
120547
|
ref: string;
|
|
120548
|
+
/**
|
|
120549
|
+
* Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
|
|
120550
|
+
*/
|
|
119611
120551
|
url: (string | null);
|
|
120552
|
+
/**
|
|
120553
|
+
* What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
|
|
120554
|
+
*/
|
|
119612
120555
|
name: string;
|
|
120556
|
+
/**
|
|
120557
|
+
* Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
|
|
120558
|
+
*/
|
|
119613
120559
|
props: {
|
|
119614
120560
|
[k: string]: unknown;
|
|
119615
120561
|
};
|
|
120562
|
+
/**
|
|
120563
|
+
* Title of the page as the browser reported it. Null off-page.
|
|
120564
|
+
*/
|
|
119616
120565
|
title: (string | null);
|
|
120566
|
+
/**
|
|
120567
|
+
* Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
|
|
120568
|
+
*/
|
|
119617
120569
|
domain: (string | null);
|
|
120570
|
+
/**
|
|
120571
|
+
* Campaign tags and ad click carried by this event, as they were on the URL at the time.
|
|
120572
|
+
*/
|
|
119618
120573
|
source: {
|
|
120574
|
+
/**
|
|
120575
|
+
* The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
|
|
120576
|
+
*/
|
|
119619
120577
|
clickId: (string | null);
|
|
120578
|
+
/**
|
|
120579
|
+
* utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
|
|
120580
|
+
*/
|
|
119620
120581
|
utmTerm: (string | null);
|
|
120582
|
+
/**
|
|
120583
|
+
* utm_medium on the URL of this event.
|
|
120584
|
+
*/
|
|
119621
120585
|
utmMedium: (string | null);
|
|
120586
|
+
/**
|
|
120587
|
+
* utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
|
|
120588
|
+
*/
|
|
119622
120589
|
utmSource: (string | null);
|
|
120590
|
+
/**
|
|
120591
|
+
* utm_content on the URL of this event — which creative or link variant was clicked.
|
|
120592
|
+
*/
|
|
119623
120593
|
utmContent: (string | null);
|
|
120594
|
+
/**
|
|
120595
|
+
* Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
|
|
120596
|
+
*/
|
|
119624
120597
|
clickIdType: (string | null);
|
|
120598
|
+
/**
|
|
120599
|
+
* utm_campaign on the URL of this event.
|
|
120600
|
+
*/
|
|
119625
120601
|
utmCampaign: (string | null);
|
|
119626
120602
|
};
|
|
120603
|
+
/**
|
|
120604
|
+
* Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
|
|
120605
|
+
*/
|
|
119627
120606
|
country: (string | null);
|
|
120607
|
+
/**
|
|
120608
|
+
* Where the person came from immediately before this event. Null on a direct arrival or off-page.
|
|
120609
|
+
*/
|
|
119628
120610
|
referrer: (string | null);
|
|
120611
|
+
/**
|
|
120612
|
+
* Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
|
|
120613
|
+
*/
|
|
119629
120614
|
sessionId: (string | null);
|
|
119630
120615
|
}[];
|
|
120616
|
+
/**
|
|
120617
|
+
* The person themselves: their handle, how far they have come, and when they were seen.
|
|
120618
|
+
*/
|
|
119631
120619
|
profile: {
|
|
120620
|
+
/**
|
|
120621
|
+
* How far the person has come: anonymous = only a browser behind them, identified = an email or phone is known, customer = they have paid at least once.
|
|
120622
|
+
*/
|
|
119632
120623
|
status: ("anonymous" | "identified" | "customer");
|
|
120624
|
+
/**
|
|
120625
|
+
* When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
|
|
120626
|
+
*/
|
|
119633
120627
|
createdAt: string;
|
|
120628
|
+
/**
|
|
120629
|
+
* Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
|
|
120630
|
+
*/
|
|
119634
120631
|
profileId: string;
|
|
120632
|
+
/**
|
|
120633
|
+
* Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
|
|
120634
|
+
*/
|
|
119635
120635
|
lastSeenAt: string;
|
|
120636
|
+
/**
|
|
120637
|
+
* Timestamp of the earliest event on record for this person, ISO 8601 UTC.
|
|
120638
|
+
*/
|
|
119636
120639
|
firstSeenAt: string;
|
|
119637
120640
|
};
|
|
120641
|
+
/**
|
|
120642
|
+
* Everything known about who this person is: the addresses they have been identified by, the ad clicks they arrived by, and the sites they were seen on. Every part of it is a list, and none of the lists names a primary.
|
|
120643
|
+
*/
|
|
119638
120644
|
signals: {
|
|
120645
|
+
/**
|
|
120646
|
+
* Every email this person has ever been identified by. Stably ordered for display and diffing — the position of an address says NOTHING about which one to contact, and this toolkit holds no primary. Usually one entry; a person who signed up twice has several.
|
|
120647
|
+
*/
|
|
119639
120648
|
emails: string[];
|
|
120649
|
+
/**
|
|
120650
|
+
* Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
|
|
120651
|
+
*/
|
|
119640
120652
|
phones: string[];
|
|
120653
|
+
/**
|
|
120654
|
+
* Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
|
|
120655
|
+
*/
|
|
119641
120656
|
domains: string[];
|
|
120657
|
+
/**
|
|
120658
|
+
* Every ad click this person arrived by, stably ordered and with no primary among them. Personal data: a click id resolves to one individual inside the ad network.
|
|
120659
|
+
*/
|
|
119642
120660
|
clickIds: {
|
|
120661
|
+
/**
|
|
120662
|
+
* Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
|
|
120663
|
+
*/
|
|
119643
120664
|
type: string;
|
|
120665
|
+
/**
|
|
120666
|
+
* The click identifier itself, raw, as the network stamped it on the landing URL.
|
|
120667
|
+
*/
|
|
119644
120668
|
value: string;
|
|
119645
120669
|
}[];
|
|
119646
120670
|
};
|
|
120671
|
+
/**
|
|
120672
|
+
* True when the history hit the 50000-event cap and older events were left out. False means this export is everything held.
|
|
120673
|
+
*/
|
|
119647
120674
|
truncated: boolean;
|
|
120675
|
+
/**
|
|
120676
|
+
* When this export was produced, ISO 8601 UTC — the as-of date to put on a subject-access response.
|
|
120677
|
+
*/
|
|
119648
120678
|
exportedAt: string;
|
|
120679
|
+
/**
|
|
120680
|
+
* First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
|
|
120681
|
+
*/
|
|
119649
120682
|
acquisition: ({
|
|
120683
|
+
/**
|
|
120684
|
+
* Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
|
|
120685
|
+
*/
|
|
119650
120686
|
utmMedium: (string | null);
|
|
120687
|
+
/**
|
|
120688
|
+
* Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
|
|
120689
|
+
*/
|
|
119651
120690
|
utmSource: (string | null);
|
|
120691
|
+
/**
|
|
120692
|
+
* Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
|
|
120693
|
+
*/
|
|
119652
120694
|
clickIdType: (string | null);
|
|
120695
|
+
/**
|
|
120696
|
+
* When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
|
|
120697
|
+
*/
|
|
119653
120698
|
firstSeenAt: string;
|
|
120699
|
+
/**
|
|
120700
|
+
* Campaign of that same first visit (utm_campaign). Null when untagged.
|
|
120701
|
+
*/
|
|
119654
120702
|
utmCampaign: (string | null);
|
|
119655
120703
|
} | null);
|
|
119656
120704
|
}
|
|
@@ -119664,76 +120712,226 @@ export interface TrackingProfilesGetInput {
|
|
|
119664
120712
|
*/
|
|
119665
120713
|
journeyLimit?: number;
|
|
119666
120714
|
/**
|
|
119667
|
-
*
|
|
120715
|
+
* Continue paging back through the journey: pass the cursor the previous page returned. Omit to start at the most recent event.
|
|
119668
120716
|
*/
|
|
119669
120717
|
journeyCursor?: string;
|
|
119670
120718
|
}
|
|
119671
120719
|
export interface TrackingProfilesGetOutput {
|
|
120720
|
+
/**
|
|
120721
|
+
* Lifetime value of this person, per currency. Null when revenue tracking is not in use for the product.
|
|
120722
|
+
*/
|
|
119672
120723
|
ltv: ({
|
|
120724
|
+
/**
|
|
120725
|
+
* One row per currency this person has paid in. Empty for someone who never paid; there is no cross-currency total, because converting would need a rate this toolkit does not hold.
|
|
120726
|
+
*/
|
|
119673
120727
|
entries: {
|
|
120728
|
+
/**
|
|
120729
|
+
* ISO 4217 code the amounts beside it are denominated in, e.g. EUR. One entry per code the person ever paid in.
|
|
120730
|
+
*/
|
|
119674
120731
|
currency: string;
|
|
120732
|
+
/**
|
|
120733
|
+
* What the business actually kept: gross minus refunded, in minor units. This is the number to rank customers by.
|
|
120734
|
+
*/
|
|
119675
120735
|
netMinor: number;
|
|
120736
|
+
/**
|
|
120737
|
+
* Everything the person was ever charged, in minor units (1250 = 12.50 EUR). Refunds are not subtracted here.
|
|
120738
|
+
*/
|
|
119676
120739
|
grossMinor: number;
|
|
120740
|
+
/**
|
|
120741
|
+
* Their most recent payment in this currency, ISO 8601 UTC — how live the relationship is.
|
|
120742
|
+
*/
|
|
119677
120743
|
lastPaymentAt: (string | null);
|
|
120744
|
+
/**
|
|
120745
|
+
* How much of the gross went back to them, in minor units. Zero for a person who never had a refund.
|
|
120746
|
+
*/
|
|
119678
120747
|
refundedMinor: number;
|
|
120748
|
+
/**
|
|
120749
|
+
* When this person first paid in this currency, ISO 8601 UTC. Null when the totals were computed without a dated payment.
|
|
120750
|
+
*/
|
|
119679
120751
|
firstPaymentAt: (string | null);
|
|
119680
120752
|
}[];
|
|
120753
|
+
/**
|
|
120754
|
+
* The person these totals belong to — the same handle as profile.profileId.
|
|
120755
|
+
*/
|
|
119681
120756
|
profileId: string;
|
|
120757
|
+
/**
|
|
120758
|
+
* When these totals were last recomputed, ISO 8601 UTC. Null when they have never been computed.
|
|
120759
|
+
*/
|
|
119682
120760
|
computedAt: (string | null);
|
|
119683
120761
|
} | null);
|
|
120762
|
+
/**
|
|
120763
|
+
* What this person did, newest first, one page at a time. Use the export step instead when the whole history is wanted in one go.
|
|
120764
|
+
*/
|
|
119684
120765
|
journey: {
|
|
120766
|
+
/**
|
|
120767
|
+
* Pass back as `journeyCursor` to page further back in time. Null once the journey is exhausted.
|
|
120768
|
+
*/
|
|
119685
120769
|
cursor: (string | null);
|
|
120770
|
+
/**
|
|
120771
|
+
* This page of the journey, newest event first.
|
|
120772
|
+
*/
|
|
119686
120773
|
events: {
|
|
120774
|
+
/**
|
|
120775
|
+
* When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
|
|
120776
|
+
*/
|
|
119687
120777
|
ts: string;
|
|
120778
|
+
/**
|
|
120779
|
+
* Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
|
|
120780
|
+
*/
|
|
119688
120781
|
ref: string;
|
|
120782
|
+
/**
|
|
120783
|
+
* Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
|
|
120784
|
+
*/
|
|
119689
120785
|
url: (string | null);
|
|
120786
|
+
/**
|
|
120787
|
+
* What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
|
|
120788
|
+
*/
|
|
119690
120789
|
name: string;
|
|
120790
|
+
/**
|
|
120791
|
+
* Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
|
|
120792
|
+
*/
|
|
119691
120793
|
props: {
|
|
119692
120794
|
[k: string]: unknown;
|
|
119693
120795
|
};
|
|
120796
|
+
/**
|
|
120797
|
+
* Title of the page as the browser reported it. Null off-page.
|
|
120798
|
+
*/
|
|
119694
120799
|
title: (string | null);
|
|
120800
|
+
/**
|
|
120801
|
+
* Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
|
|
120802
|
+
*/
|
|
119695
120803
|
domain: (string | null);
|
|
120804
|
+
/**
|
|
120805
|
+
* Campaign tags and ad click carried by this event, as they were on the URL at the time.
|
|
120806
|
+
*/
|
|
119696
120807
|
source: {
|
|
120808
|
+
/**
|
|
120809
|
+
* The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
|
|
120810
|
+
*/
|
|
119697
120811
|
clickId: (string | null);
|
|
120812
|
+
/**
|
|
120813
|
+
* utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
|
|
120814
|
+
*/
|
|
119698
120815
|
utmTerm: (string | null);
|
|
120816
|
+
/**
|
|
120817
|
+
* utm_medium on the URL of this event.
|
|
120818
|
+
*/
|
|
119699
120819
|
utmMedium: (string | null);
|
|
120820
|
+
/**
|
|
120821
|
+
* utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
|
|
120822
|
+
*/
|
|
119700
120823
|
utmSource: (string | null);
|
|
120824
|
+
/**
|
|
120825
|
+
* utm_content on the URL of this event — which creative or link variant was clicked.
|
|
120826
|
+
*/
|
|
119701
120827
|
utmContent: (string | null);
|
|
120828
|
+
/**
|
|
120829
|
+
* Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
|
|
120830
|
+
*/
|
|
119702
120831
|
clickIdType: (string | null);
|
|
120832
|
+
/**
|
|
120833
|
+
* utm_campaign on the URL of this event.
|
|
120834
|
+
*/
|
|
119703
120835
|
utmCampaign: (string | null);
|
|
119704
120836
|
};
|
|
120837
|
+
/**
|
|
120838
|
+
* Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
|
|
120839
|
+
*/
|
|
119705
120840
|
country: (string | null);
|
|
119706
|
-
|
|
120841
|
+
/**
|
|
120842
|
+
* Where the person came from immediately before this event. Null on a direct arrival or off-page.
|
|
120843
|
+
*/
|
|
120844
|
+
referrer: (string | null);
|
|
120845
|
+
/**
|
|
120846
|
+
* Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
|
|
120847
|
+
*/
|
|
119707
120848
|
sessionId: (string | null);
|
|
119708
120849
|
}[];
|
|
119709
120850
|
};
|
|
120851
|
+
/**
|
|
120852
|
+
* The person themselves: their handle, how far they have come, and when they were seen.
|
|
120853
|
+
*/
|
|
119710
120854
|
profile: {
|
|
120855
|
+
/**
|
|
120856
|
+
* How far the person has come: anonymous = only a browser behind them, identified = an email or phone is known, customer = they have paid at least once.
|
|
120857
|
+
*/
|
|
119711
120858
|
status: ("anonymous" | "identified" | "customer");
|
|
120859
|
+
/**
|
|
120860
|
+
* When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
|
|
120861
|
+
*/
|
|
119712
120862
|
createdAt: string;
|
|
120863
|
+
/**
|
|
120864
|
+
* Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
|
|
120865
|
+
*/
|
|
119713
120866
|
profileId: string;
|
|
120867
|
+
/**
|
|
120868
|
+
* Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
|
|
120869
|
+
*/
|
|
119714
120870
|
lastSeenAt: string;
|
|
120871
|
+
/**
|
|
120872
|
+
* Timestamp of the earliest event on record for this person, ISO 8601 UTC.
|
|
120873
|
+
*/
|
|
119715
120874
|
firstSeenAt: string;
|
|
119716
120875
|
};
|
|
120876
|
+
/**
|
|
120877
|
+
* Everything known about who this person is: the addresses they have been identified by, the ad clicks they arrived by, and the sites they were seen on. Every part of it is a list, and none of the lists names a primary.
|
|
120878
|
+
*/
|
|
119717
120879
|
signals: {
|
|
120880
|
+
/**
|
|
120881
|
+
* Every email this person has ever been identified by. Stably ordered for display and diffing — the position of an address says NOTHING about which one to contact, and this toolkit holds no primary. Usually one entry; a person who signed up twice has several.
|
|
120882
|
+
*/
|
|
119718
120883
|
emails: string[];
|
|
120884
|
+
/**
|
|
120885
|
+
* Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
|
|
120886
|
+
*/
|
|
119719
120887
|
phones: string[];
|
|
120888
|
+
/**
|
|
120889
|
+
* Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
|
|
120890
|
+
*/
|
|
119720
120891
|
domains: string[];
|
|
120892
|
+
/**
|
|
120893
|
+
* Every ad click this person arrived by, stably ordered and with no primary among them. Personal data: a click id resolves to one individual inside the ad network.
|
|
120894
|
+
*/
|
|
119721
120895
|
clickIds: {
|
|
120896
|
+
/**
|
|
120897
|
+
* Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
|
|
120898
|
+
*/
|
|
119722
120899
|
type: string;
|
|
120900
|
+
/**
|
|
120901
|
+
* The click identifier itself, raw, as the network stamped it on the landing URL.
|
|
120902
|
+
*/
|
|
119723
120903
|
value: string;
|
|
119724
120904
|
}[];
|
|
119725
120905
|
};
|
|
120906
|
+
/**
|
|
120907
|
+
* First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
|
|
120908
|
+
*/
|
|
119726
120909
|
acquisition: ({
|
|
120910
|
+
/**
|
|
120911
|
+
* Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
|
|
120912
|
+
*/
|
|
119727
120913
|
utmMedium: (string | null);
|
|
120914
|
+
/**
|
|
120915
|
+
* Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
|
|
120916
|
+
*/
|
|
119728
120917
|
utmSource: (string | null);
|
|
120918
|
+
/**
|
|
120919
|
+
* Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
|
|
120920
|
+
*/
|
|
119729
120921
|
clickIdType: (string | null);
|
|
120922
|
+
/**
|
|
120923
|
+
* When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
|
|
120924
|
+
*/
|
|
119730
120925
|
firstSeenAt: string;
|
|
120926
|
+
/**
|
|
120927
|
+
* Campaign of that same first visit (utm_campaign). Null when untagged.
|
|
120928
|
+
*/
|
|
119731
120929
|
utmCampaign: (string | null);
|
|
119732
120930
|
} | null);
|
|
119733
120931
|
}
|
|
119734
120932
|
export interface TrackingProfilesListInput {
|
|
119735
120933
|
/**
|
|
119736
|
-
*
|
|
120934
|
+
* Email to search people by — the whole address by default, or its beginning when emailMatch is prefix. Omit to search across everyone.
|
|
119737
120935
|
*/
|
|
119738
120936
|
email?: string;
|
|
119739
120937
|
/**
|
|
@@ -119741,126 +120939,357 @@ export interface TrackingProfilesListInput {
|
|
|
119741
120939
|
*/
|
|
119742
120940
|
limit?: number;
|
|
119743
120941
|
/**
|
|
119744
|
-
*
|
|
120942
|
+
* Continue a previous page: pass the cursor that page returned. Omit to start from the most recently seen person.
|
|
119745
120943
|
*/
|
|
119746
120944
|
cursor?: string;
|
|
119747
120945
|
/**
|
|
119748
|
-
*
|
|
120946
|
+
* Keep only people at this stage — anonymous, identified or customer. Omit to get all three.
|
|
119749
120947
|
*/
|
|
119750
120948
|
status?: ("anonymous" | "identified" | "customer");
|
|
119751
120949
|
/**
|
|
119752
|
-
* How
|
|
120950
|
+
* How the email filter is matched: exact (default) compares the whole address case-insensitively, prefix matches everyone whose address starts with what you typed.
|
|
119753
120951
|
*/
|
|
119754
120952
|
emailMatch?: ("exact" | "prefix");
|
|
119755
120953
|
}
|
|
119756
120954
|
export interface TrackingProfilesListOutput {
|
|
120955
|
+
/**
|
|
120956
|
+
* Pass this back as `cursor` to fetch the next page. Null on the last page — that null is how a loop knows to stop.
|
|
120957
|
+
*/
|
|
119757
120958
|
cursor: (string | null);
|
|
120959
|
+
/**
|
|
120960
|
+
* The page of people, most recently seen first. Shorter than the requested limit on the last page.
|
|
120961
|
+
*/
|
|
119758
120962
|
profiles: {
|
|
120963
|
+
/**
|
|
120964
|
+
* Every email this person has been identified by. Stably ordered for display, with no primary among them — position 0 is not the address to contact.
|
|
120965
|
+
*/
|
|
119759
120966
|
emails: string[];
|
|
120967
|
+
/**
|
|
120968
|
+
* How far this person has come: anonymous = only a browser, identified = an email or phone is known, customer = they have paid.
|
|
120969
|
+
*/
|
|
119760
120970
|
status: ("anonymous" | "identified" | "customer");
|
|
120971
|
+
/**
|
|
120972
|
+
* Stable handle for this person. Feed it to a get, export or erase step.
|
|
120973
|
+
*/
|
|
119761
120974
|
profileId: string;
|
|
120975
|
+
/**
|
|
120976
|
+
* Timestamp of their most recent event, ISO 8601 UTC. The page is ordered by this, newest first.
|
|
120977
|
+
*/
|
|
119762
120978
|
lastSeenAt: string;
|
|
120979
|
+
/**
|
|
120980
|
+
* First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
|
|
120981
|
+
*/
|
|
119763
120982
|
acquisition: ({
|
|
120983
|
+
/**
|
|
120984
|
+
* Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
|
|
120985
|
+
*/
|
|
119764
120986
|
utmMedium: (string | null);
|
|
120987
|
+
/**
|
|
120988
|
+
* Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
|
|
120989
|
+
*/
|
|
119765
120990
|
utmSource: (string | null);
|
|
120991
|
+
/**
|
|
120992
|
+
* Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
|
|
120993
|
+
*/
|
|
119766
120994
|
clickIdType: (string | null);
|
|
120995
|
+
/**
|
|
120996
|
+
* When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
|
|
120997
|
+
*/
|
|
119767
120998
|
firstSeenAt: string;
|
|
120999
|
+
/**
|
|
121000
|
+
* Campaign of that same first visit (utm_campaign). Null when untagged.
|
|
121001
|
+
*/
|
|
119768
121002
|
utmCampaign: (string | null);
|
|
119769
121003
|
} | null);
|
|
121004
|
+
/**
|
|
121005
|
+
* Timestamp of their earliest event, ISO 8601 UTC.
|
|
121006
|
+
*/
|
|
119770
121007
|
firstSeenAt: string;
|
|
119771
121008
|
}[];
|
|
119772
121009
|
}
|
|
119773
121010
|
export interface TrackingReportsAttributedJourneyInput {
|
|
121011
|
+
/**
|
|
121012
|
+
* Show only journey events at or before this instant (ISO). Omit for the whole history.
|
|
121013
|
+
*/
|
|
119774
121014
|
to?: string;
|
|
121015
|
+
/**
|
|
121016
|
+
* Show only journey events at or after this instant (ISO). Omit for the whole history.
|
|
121017
|
+
*/
|
|
119775
121018
|
from?: string;
|
|
121019
|
+
/**
|
|
121020
|
+
* Attribution model to explain the decision under; re-reads the same history, so switching it is free (default 'last_click').
|
|
121021
|
+
*/
|
|
119776
121022
|
model?: ("last_click" | "first_click");
|
|
119777
121023
|
/**
|
|
119778
121024
|
* The profile id (uuid)
|
|
119779
121025
|
*/
|
|
119780
121026
|
profileId: string;
|
|
121027
|
+
/**
|
|
121028
|
+
* How far back before the conversion a touchpoint may be credited, in days (default 30).
|
|
121029
|
+
*/
|
|
119781
121030
|
lookbackDays?: number;
|
|
119782
121031
|
}
|
|
119783
121032
|
export interface TrackingReportsAttributedJourneyOutput {
|
|
121033
|
+
/**
|
|
121034
|
+
* What this person actually did, in order.
|
|
121035
|
+
*/
|
|
119784
121036
|
journey: {
|
|
121037
|
+
/**
|
|
121038
|
+
* Every tracked event for this person inside the requested window, oldest first.
|
|
121039
|
+
*/
|
|
119785
121040
|
events: {
|
|
121041
|
+
/**
|
|
121042
|
+
* When the event happened (ISO 8601, UTC). Events are ordered oldest first.
|
|
121043
|
+
*/
|
|
119786
121044
|
ts: string;
|
|
121045
|
+
/**
|
|
121046
|
+
* Handle for this event within the journey; `decisions[].winnerRef` points back at one of these to name the winning touchpoint.
|
|
121047
|
+
*/
|
|
119787
121048
|
ref: string;
|
|
121049
|
+
/**
|
|
121050
|
+
* Page address the event fired on. Free text from the customer site, so it can carry personal data.
|
|
121051
|
+
*/
|
|
119788
121052
|
url: (string | null);
|
|
121053
|
+
/**
|
|
121054
|
+
* Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
|
|
121055
|
+
*/
|
|
119789
121056
|
name: string;
|
|
121057
|
+
/**
|
|
121058
|
+
* Custom properties the site attached to this event. Shape is the customer's, so it can carry anything, personal data included.
|
|
121059
|
+
*/
|
|
119790
121060
|
props: {
|
|
119791
121061
|
[k: string]: unknown;
|
|
119792
121062
|
};
|
|
121063
|
+
/**
|
|
121064
|
+
* Document title of that page. Free text from the customer site, so it can carry personal data.
|
|
121065
|
+
*/
|
|
119793
121066
|
title: (string | null);
|
|
121067
|
+
/**
|
|
121068
|
+
* Site the event came from; null when the tracker could not determine one.
|
|
121069
|
+
*/
|
|
119794
121070
|
domain: (string | null);
|
|
121071
|
+
/**
|
|
121072
|
+
* Where this event's visit came from, as read off the landing URL. Every field is null when the visit carried nothing.
|
|
121073
|
+
*/
|
|
119795
121074
|
source: {
|
|
121075
|
+
/**
|
|
121076
|
+
* The click id value itself. Identifies one ad click by this person, so treat it as personal data.
|
|
121077
|
+
*/
|
|
119796
121078
|
clickId: (string | null);
|
|
121079
|
+
/**
|
|
121080
|
+
* utm_term of the landing URL, the paid keyword; null when absent.
|
|
121081
|
+
*/
|
|
119797
121082
|
utmTerm: (string | null);
|
|
121083
|
+
/**
|
|
121084
|
+
* utm_medium of the landing URL; null when absent.
|
|
121085
|
+
*/
|
|
119798
121086
|
utmMedium: (string | null);
|
|
121087
|
+
/**
|
|
121088
|
+
* utm_source of the landing URL; null when absent.
|
|
121089
|
+
*/
|
|
119799
121090
|
utmSource: (string | null);
|
|
121091
|
+
/**
|
|
121092
|
+
* utm_content of the landing URL, the creative variant; null when absent.
|
|
121093
|
+
*/
|
|
119800
121094
|
utmContent: (string | null);
|
|
121095
|
+
/**
|
|
121096
|
+
* Which ad-network click id was present, e.g. 'gclid'; null when the visit carried none.
|
|
121097
|
+
*/
|
|
119801
121098
|
clickIdType: (string | null);
|
|
121099
|
+
/**
|
|
121100
|
+
* utm_campaign of the landing URL; null when absent.
|
|
121101
|
+
*/
|
|
119802
121102
|
utmCampaign: (string | null);
|
|
119803
121103
|
};
|
|
121104
|
+
/**
|
|
121105
|
+
* Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
|
|
121106
|
+
*/
|
|
119804
121107
|
country: (string | null);
|
|
121108
|
+
/**
|
|
121109
|
+
* Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
|
|
121110
|
+
*/
|
|
119805
121111
|
referrer: (string | null);
|
|
121112
|
+
/**
|
|
121113
|
+
* Visit this event belongs to; events sharing one happened in the same sitting. Null when no session could be established.
|
|
121114
|
+
*/
|
|
119806
121115
|
sessionId: (string | null);
|
|
119807
121116
|
}[];
|
|
119808
121117
|
};
|
|
119809
|
-
|
|
119810
|
-
|
|
119811
|
-
|
|
119812
|
-
|
|
119813
|
-
|
|
119814
|
-
|
|
119815
|
-
|
|
119816
|
-
refundedMinor: number;
|
|
119817
|
-
}[];
|
|
119818
|
-
winnerRef: (string | null);
|
|
119819
|
-
conversionTs: string;
|
|
119820
|
-
lookbackDays: number;
|
|
119821
|
-
winningTouchpoint: ({
|
|
119822
|
-
ts: string;
|
|
119823
|
-
channel: ("paid" | "organic" | "direct" | "email");
|
|
119824
|
-
utmMedium: (string | null);
|
|
119825
|
-
utmSource: (string | null);
|
|
119826
|
-
clickIdType: (string | null);
|
|
119827
|
-
utmCampaign: (string | null);
|
|
119828
|
-
} | null);
|
|
119829
|
-
}[];
|
|
121118
|
+
/**
|
|
121119
|
+
* Holds at most one entry: the decision for this person's originating conversion, present only when that conversion falls inside the requested window. Kept as a list for callers that already read it; `originatingDecision` is the same value at a bindable path.
|
|
121120
|
+
*/
|
|
121121
|
+
decisions: TrackingReportsAttributedJourneyOutputItems[];
|
|
121122
|
+
/**
|
|
121123
|
+
* The person this journey belongs to, echoed back from the request.
|
|
121124
|
+
*/
|
|
119830
121125
|
profileId: string;
|
|
121126
|
+
/**
|
|
121127
|
+
* The attribution decision for this person's originating conversion — the same value as `decisions[0]`, at a path a workflow can bind. Null means the decision is not in THIS window, not that the person never converted: a conversion before `from` or after `to` is excluded here while still being their originating one. Widen the window to see it.
|
|
121128
|
+
*/
|
|
121129
|
+
originatingDecision: (TrackingReportsAttributedJourneyOutputItems | null);
|
|
121130
|
+
}
|
|
121131
|
+
export interface TrackingReportsAttributedJourneyOutputItems {
|
|
121132
|
+
/**
|
|
121133
|
+
* Attribution model the winner was picked under, echoed back from the request.
|
|
121134
|
+
*/
|
|
121135
|
+
model: ("last_click" | "first_click");
|
|
121136
|
+
/**
|
|
121137
|
+
* Why this touchpoint won, or why nothing did, in a sentence a person can read.
|
|
121138
|
+
*/
|
|
121139
|
+
reason: string;
|
|
121140
|
+
/**
|
|
121141
|
+
* Revenue of that conversion, one row per currency.
|
|
121142
|
+
*/
|
|
121143
|
+
revenue: {
|
|
121144
|
+
/**
|
|
121145
|
+
* ISO 4217 code the amounts below are denominated in, e.g. EUR.
|
|
121146
|
+
*/
|
|
121147
|
+
currency: string;
|
|
121148
|
+
/**
|
|
121149
|
+
* `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
|
|
121150
|
+
*/
|
|
121151
|
+
netMinor: number;
|
|
121152
|
+
/**
|
|
121153
|
+
* Billed amount before refunds, in minor units of `currency` (cents for EUR).
|
|
121154
|
+
*/
|
|
121155
|
+
grossMinor: number;
|
|
121156
|
+
/**
|
|
121157
|
+
* Amount refunded out of `grossMinor`, in minor units of `currency`.
|
|
121158
|
+
*/
|
|
121159
|
+
refundedMinor: number;
|
|
121160
|
+
}[];
|
|
121161
|
+
/**
|
|
121162
|
+
* `journey.events[].ref` of the touchpoint that won the credit. Null when nothing inside the window qualified.
|
|
121163
|
+
*/
|
|
121164
|
+
winnerRef: (string | null);
|
|
121165
|
+
/**
|
|
121166
|
+
* When the conversion this decision explains happened (ISO 8601, UTC).
|
|
121167
|
+
*/
|
|
121168
|
+
conversionTs: string;
|
|
121169
|
+
/**
|
|
121170
|
+
* How far back before `conversionTs` a touchpoint was allowed to be credited, in days; echoed back.
|
|
121171
|
+
*/
|
|
121172
|
+
lookbackDays: number;
|
|
121173
|
+
/**
|
|
121174
|
+
* The winning touchpoint spelled out, so a reader need not resolve `winnerRef`. Null exactly when `winnerRef` is null.
|
|
121175
|
+
*/
|
|
121176
|
+
winningTouchpoint: ({
|
|
121177
|
+
/**
|
|
121178
|
+
* When the winning touchpoint happened (ISO 8601, UTC).
|
|
121179
|
+
*/
|
|
121180
|
+
ts: string;
|
|
121181
|
+
/**
|
|
121182
|
+
* Channel the winning touchpoint belongs to.
|
|
121183
|
+
*/
|
|
121184
|
+
channel: ("paid" | "organic" | "direct" | "email");
|
|
121185
|
+
/**
|
|
121186
|
+
* utm_medium of the winning touchpoint; null when it carried none.
|
|
121187
|
+
*/
|
|
121188
|
+
utmMedium: (string | null);
|
|
121189
|
+
/**
|
|
121190
|
+
* utm_source of the winning touchpoint; null when it carried none.
|
|
121191
|
+
*/
|
|
121192
|
+
utmSource: (string | null);
|
|
121193
|
+
/**
|
|
121194
|
+
* Campaign id carried by our own `_lt_campaign` landing-URL parameter; null when the visit carried none.
|
|
121195
|
+
*/
|
|
121196
|
+
ltCampaign?: (string | null);
|
|
121197
|
+
/**
|
|
121198
|
+
* Ad-network click id present on the winning touchpoint, e.g. 'gclid'; null when it carried none.
|
|
121199
|
+
*/
|
|
121200
|
+
clickIdType: (string | null);
|
|
121201
|
+
/**
|
|
121202
|
+
* utm_campaign of the winning touchpoint; null when it carried none.
|
|
121203
|
+
*/
|
|
121204
|
+
utmCampaign: (string | null);
|
|
121205
|
+
} | null);
|
|
119831
121206
|
}
|
|
119832
121207
|
export interface TrackingReportsEventVolumeInput {
|
|
119833
|
-
|
|
119834
|
-
|
|
121208
|
+
/**
|
|
121209
|
+
* End of the range to count, inclusive (ISO 8601). Optional — defaults to the moment of the call.
|
|
121210
|
+
*/
|
|
121211
|
+
to?: string;
|
|
121212
|
+
/**
|
|
121213
|
+
* Start of the range to count, inclusive (ISO 8601). Optional — defaults to 30 days back, the start of that UTC day.
|
|
121214
|
+
*/
|
|
121215
|
+
from?: string;
|
|
121216
|
+
/**
|
|
121217
|
+
* Count only this site. Omit to count every site the product sends from.
|
|
121218
|
+
*/
|
|
119835
121219
|
domain?: string;
|
|
119836
121220
|
}
|
|
119837
121221
|
export interface TrackingReportsEventVolumeOutput {
|
|
121222
|
+
/**
|
|
121223
|
+
* End of the range the figures cover, echoed back (ISO 8601, UTC).
|
|
121224
|
+
*/
|
|
119838
121225
|
to: string;
|
|
121226
|
+
/**
|
|
121227
|
+
* Start of the range the figures cover, echoed back (ISO 8601, UTC).
|
|
121228
|
+
*/
|
|
119839
121229
|
from: string;
|
|
121230
|
+
/**
|
|
121231
|
+
* Site the figures were restricted to; null when every site of the product is included.
|
|
121232
|
+
*/
|
|
119840
121233
|
domain: (string | null);
|
|
121234
|
+
/**
|
|
121235
|
+
* When this report was computed (ISO 8601, UTC).
|
|
121236
|
+
*/
|
|
119841
121237
|
computedAt: string;
|
|
121238
|
+
/**
|
|
121239
|
+
* How COMPLETE the two headline figures above are. Contains no metric of its own — never present a field of it as a headline number and never add it to anything. consentGrantedEvents + cookielessEvents + noBannerEvents = totalEvents.
|
|
121240
|
+
*/
|
|
119842
121241
|
dataQuality: {
|
|
121242
|
+
/**
|
|
121243
|
+
* Fraction of `totalEvents` (0..1) that came from sites running no consent banner, where nobody was ever asked.
|
|
121244
|
+
*/
|
|
119843
121245
|
noBannerShare: number;
|
|
121246
|
+
/**
|
|
121247
|
+
* Events from sites with no consent banner. Kept apart from `cookielessEvents` on purpose: nobody refused here, nobody was asked.
|
|
121248
|
+
*/
|
|
119844
121249
|
noBannerEvents: number;
|
|
121250
|
+
/**
|
|
121251
|
+
* How many UTC days the range spans; each one re-counts a returning declining visitor.
|
|
121252
|
+
*/
|
|
119845
121253
|
utcDaysInRange: number;
|
|
121254
|
+
/**
|
|
121255
|
+
* Fraction of `totalEvents` (0..1) that came from visitors who declined statistics consent.
|
|
121256
|
+
*/
|
|
119846
121257
|
cookielessShare: number;
|
|
121258
|
+
/**
|
|
121259
|
+
* Events from visitors who declined; no cookie was written and no identifier sent.
|
|
121260
|
+
*/
|
|
119847
121261
|
cookielessEvents: number;
|
|
121262
|
+
/**
|
|
121263
|
+
* Events carrying an anonymous id. A different cut that overlaps the three consent buckets — it is not the complement of `cookielessEvents` and must never be added to it.
|
|
121264
|
+
*/
|
|
119848
121265
|
identifiedEvents: number;
|
|
121266
|
+
/**
|
|
121267
|
+
* True when `visitorsDeduplicatedPerUtcDay` over-counts for this range: the range spans more than one UTC day and there is declining traffic in it.
|
|
121268
|
+
*/
|
|
119849
121269
|
visitorsOverstated: boolean;
|
|
121270
|
+
/**
|
|
121271
|
+
* Events from visitors who granted statistics consent.
|
|
121272
|
+
*/
|
|
119850
121273
|
consentGrantedEvents: number;
|
|
119851
121274
|
};
|
|
121275
|
+
/**
|
|
121276
|
+
* How many events arrived in the range, across every consent state.
|
|
121277
|
+
*/
|
|
119852
121278
|
totalEvents: number;
|
|
121279
|
+
/**
|
|
121280
|
+
* How many PEOPLE those events came from: one COUNT DISTINCT over consenting visitors (by anonymous id) and declining visitors (by a daily key destroyed each UTC midnight) at once. Over a range longer than one UTC day this is an OVER-count of the declining half — read `dataQuality.visitorsOverstated` before reporting it.
|
|
121281
|
+
*/
|
|
119853
121282
|
visitorsDeduplicatedPerUtcDay: number;
|
|
119854
121283
|
}
|
|
119855
121284
|
export interface TrackingReportsRevenueBySourceInput {
|
|
119856
121285
|
/**
|
|
119857
|
-
* Cohort window end (ISO)
|
|
121286
|
+
* Cohort window end (ISO). Optional — defaults to the moment of the call.
|
|
119858
121287
|
*/
|
|
119859
|
-
to
|
|
121288
|
+
to?: string;
|
|
119860
121289
|
/**
|
|
119861
|
-
* Cohort window start (ISO); selects conversions by subscription start
|
|
121290
|
+
* Cohort window start (ISO); selects conversions by subscription start. Optional — defaults to 30 days back, the start of that UTC day.
|
|
119862
121291
|
*/
|
|
119863
|
-
from
|
|
121292
|
+
from?: string;
|
|
119864
121293
|
/**
|
|
119865
121294
|
* Attribution model
|
|
119866
121295
|
*/
|
|
@@ -119875,53 +121304,149 @@ export interface TrackingReportsRevenueBySourceInput {
|
|
|
119875
121304
|
lookbackDays?: number;
|
|
119876
121305
|
}
|
|
119877
121306
|
export interface TrackingReportsRevenueBySourceOutput {
|
|
121307
|
+
/**
|
|
121308
|
+
* End of the cohort window the figures cover, echoed back (ISO 8601, UTC).
|
|
121309
|
+
*/
|
|
119878
121310
|
to: string;
|
|
121311
|
+
/**
|
|
121312
|
+
* Start of the cohort window the figures cover, echoed back (ISO 8601, UTC).
|
|
121313
|
+
*/
|
|
119879
121314
|
from: string;
|
|
121315
|
+
/**
|
|
121316
|
+
* Attribution model the credit was assigned under, echoed back. Pass the same value to `tracking_reports_source_people` to drill into a row.
|
|
121317
|
+
*/
|
|
119880
121318
|
model: ("last_click" | "first_click");
|
|
121319
|
+
/**
|
|
121320
|
+
* Site touchpoints were restricted to; null when every site of the product was considered.
|
|
121321
|
+
*/
|
|
119881
121322
|
domain: (string | null);
|
|
121323
|
+
/**
|
|
121324
|
+
* Every channel plus `unattributed`. This is the whole window, not the attributed part of it.
|
|
121325
|
+
*/
|
|
119882
121326
|
totals: {
|
|
121327
|
+
/**
|
|
121328
|
+
* Revenue over every channel plus `unattributed`, one row per currency.
|
|
121329
|
+
*/
|
|
119883
121330
|
revenue: TrackingReportsRevenueBySourceOutputItems[];
|
|
121331
|
+
/**
|
|
121332
|
+
* Distinct paying people over every channel plus `unattributed`.
|
|
121333
|
+
*/
|
|
119884
121334
|
customers: number;
|
|
119885
121335
|
};
|
|
121336
|
+
/**
|
|
121337
|
+
* One row per channel that earned revenue in the window. Channels with none are omitted.
|
|
121338
|
+
*/
|
|
119886
121339
|
channels: {
|
|
121340
|
+
/**
|
|
121341
|
+
* Which acquisition channel this row aggregates.
|
|
121342
|
+
*/
|
|
119887
121343
|
channel: ("paid" | "organic" | "direct" | "email");
|
|
121344
|
+
/**
|
|
121345
|
+
* Revenue credited to this channel, one row per currency, ordered by currency code. Currencies are never summed, so there is no single figure here: a product trading in two currencies has two rows and both must be reported.
|
|
121346
|
+
*/
|
|
119888
121347
|
revenue: TrackingReportsRevenueBySourceOutputItems[];
|
|
121348
|
+
/**
|
|
121349
|
+
* Distinct paying people credited to this channel.
|
|
121350
|
+
*/
|
|
119889
121351
|
customers: number;
|
|
121352
|
+
/**
|
|
121353
|
+
* The channel split by UTM combination. Each row is a drill-down target for `tracking_reports_source_people`.
|
|
121354
|
+
*/
|
|
119890
121355
|
utmBreakdown: {
|
|
121356
|
+
/**
|
|
121357
|
+
* Revenue credited to this UTM combination, one row per currency.
|
|
121358
|
+
*/
|
|
119891
121359
|
revenue: TrackingReportsRevenueBySourceOutputItems[];
|
|
121360
|
+
/**
|
|
121361
|
+
* Distinct paying people credited to this UTM combination.
|
|
121362
|
+
*/
|
|
119892
121363
|
customers: number;
|
|
121364
|
+
/**
|
|
121365
|
+
* utm_medium of this row; null when the visit carried none.
|
|
121366
|
+
*/
|
|
119893
121367
|
utmMedium: (string | null);
|
|
121368
|
+
/**
|
|
121369
|
+
* utm_source of this row; null when the visit carried none.
|
|
121370
|
+
*/
|
|
119894
121371
|
utmSource: (string | null);
|
|
121372
|
+
/**
|
|
121373
|
+
* Ad-network click id present on the visit, e.g. 'gclid'; null when it carried none.
|
|
121374
|
+
*/
|
|
119895
121375
|
clickIdType: (string | null);
|
|
121376
|
+
/**
|
|
121377
|
+
* utm_campaign of this row; null when the visit carried none.
|
|
121378
|
+
*/
|
|
119896
121379
|
utmCampaign: (string | null);
|
|
119897
121380
|
}[];
|
|
119898
121381
|
}[];
|
|
121382
|
+
/**
|
|
121383
|
+
* Fraction of paying people (0..1) a touchpoint could be found for: attributed customers over `totals.customers`. Count-based, never revenue-weighted.
|
|
121384
|
+
*/
|
|
119899
121385
|
matchRate: number;
|
|
121386
|
+
/**
|
|
121387
|
+
* When this report was computed (ISO 8601, UTC).
|
|
121388
|
+
*/
|
|
119900
121389
|
computedAt: string;
|
|
121390
|
+
/**
|
|
121391
|
+
* How far back before a conversion a touchpoint was allowed to be credited, in days; echoed back.
|
|
121392
|
+
*/
|
|
119901
121393
|
lookbackDays: number;
|
|
121394
|
+
/**
|
|
121395
|
+
* Revenue that reached no channel — kept as its own row so the channel rows are never quietly inflated to cover it.
|
|
121396
|
+
*/
|
|
119902
121397
|
unattributed: {
|
|
121398
|
+
/**
|
|
121399
|
+
* Revenue no touchpoint could be credited for, one row per currency.
|
|
121400
|
+
*/
|
|
119903
121401
|
revenue: TrackingReportsRevenueBySourceOutputItems[];
|
|
121402
|
+
/**
|
|
121403
|
+
* Distinct paying people no touchpoint could be credited for.
|
|
121404
|
+
*/
|
|
119904
121405
|
customers: number;
|
|
119905
121406
|
};
|
|
119906
121407
|
}
|
|
119907
121408
|
export interface TrackingReportsRevenueBySourceOutputItems {
|
|
121409
|
+
/**
|
|
121410
|
+
* ISO 4217 code the amounts below are denominated in, e.g. EUR.
|
|
121411
|
+
*/
|
|
119908
121412
|
currency: string;
|
|
121413
|
+
/**
|
|
121414
|
+
* `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
|
|
121415
|
+
*/
|
|
119909
121416
|
netMinor: number;
|
|
121417
|
+
/**
|
|
121418
|
+
* Billed amount before refunds, in minor units of `currency` (cents for EUR).
|
|
121419
|
+
*/
|
|
119910
121420
|
grossMinor: number;
|
|
121421
|
+
/**
|
|
121422
|
+
* Amount refunded out of `grossMinor`, in minor units of `currency`.
|
|
121423
|
+
*/
|
|
119911
121424
|
refundedMinor: number;
|
|
119912
121425
|
}
|
|
119913
121426
|
export interface TrackingReportsSourcePeopleInput {
|
|
119914
|
-
|
|
119915
|
-
|
|
121427
|
+
/**
|
|
121428
|
+
* Cohort window end (ISO); must match the report this row came from. Optional — defaults to the moment of the call.
|
|
121429
|
+
*/
|
|
121430
|
+
to?: string;
|
|
121431
|
+
/**
|
|
121432
|
+
* Cohort window start (ISO); must match the report this row came from. Optional — defaults to 30 days back, the start of that UTC day.
|
|
121433
|
+
*/
|
|
121434
|
+
from?: string;
|
|
119916
121435
|
/**
|
|
119917
121436
|
* People per page (default 50, max 200)
|
|
119918
121437
|
*/
|
|
119919
121438
|
limit?: number;
|
|
121439
|
+
/**
|
|
121440
|
+
* Attribution model to credit the touchpoint under; must match the report this row came from (default 'last_click').
|
|
121441
|
+
*/
|
|
119920
121442
|
model?: ("last_click" | "first_click");
|
|
119921
121443
|
/**
|
|
119922
121444
|
* Opaque keyset cursor from a previous page
|
|
119923
121445
|
*/
|
|
119924
121446
|
cursor?: string;
|
|
121447
|
+
/**
|
|
121448
|
+
* Only consider touchpoints on this domain; must match the report this row came from. Omit for no restriction.
|
|
121449
|
+
*/
|
|
119925
121450
|
domain?: string;
|
|
119926
121451
|
/**
|
|
119927
121452
|
* Channel to drill into
|
|
@@ -119931,26 +121456,71 @@ export interface TrackingReportsSourcePeopleInput {
|
|
|
119931
121456
|
* Comma-separated dimension names (utmSource,utmMedium,utmCampaign,clickIdType) that must be IS NULL
|
|
119932
121457
|
*/
|
|
119933
121458
|
utmNulls?: string;
|
|
121459
|
+
/**
|
|
121460
|
+
* utm_medium of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
|
|
121461
|
+
*/
|
|
119934
121462
|
utmMedium?: string;
|
|
121463
|
+
/**
|
|
121464
|
+
* utm_source of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
|
|
121465
|
+
*/
|
|
119935
121466
|
utmSource?: string;
|
|
119936
121467
|
/**
|
|
119937
121468
|
* Native click-id type of the breakdown row to drill into (e.g. 'gclid'). Tri-state: omit for no filter (all click ids), pass a value to match it, or list 'clickIdType' in utmNulls to match the IS-NULL row.
|
|
119938
121469
|
*/
|
|
119939
121470
|
clickIdType?: string;
|
|
121471
|
+
/**
|
|
121472
|
+
* utm_campaign of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
|
|
121473
|
+
*/
|
|
119940
121474
|
utmCampaign?: string;
|
|
121475
|
+
/**
|
|
121476
|
+
* How far back before a conversion a touchpoint may be credited, in days; must match the report this row came from (default 30).
|
|
121477
|
+
*/
|
|
119941
121478
|
lookbackDays?: number;
|
|
119942
121479
|
}
|
|
119943
121480
|
export interface TrackingReportsSourcePeopleOutput {
|
|
121481
|
+
/**
|
|
121482
|
+
* Pass back as `cursor` for the next page. Null on the last page.
|
|
121483
|
+
*/
|
|
119944
121484
|
cursor: (string | null);
|
|
121485
|
+
/**
|
|
121486
|
+
* The page of people behind the requested row, ordered by the keyset the cursor walks.
|
|
121487
|
+
*/
|
|
119945
121488
|
people: {
|
|
121489
|
+
/**
|
|
121490
|
+
* Where this person stands in their subscription lifecycle, e.g. active or churned.
|
|
121491
|
+
*/
|
|
119946
121492
|
status: string;
|
|
121493
|
+
/**
|
|
121494
|
+
* Identifier of this person; pass it to `tracking_reports_attributed_journey` to see why they were credited here.
|
|
121495
|
+
*/
|
|
119947
121496
|
profileId: string;
|
|
121497
|
+
/**
|
|
121498
|
+
* Most recent tracked activity for this person (ISO 8601, UTC); null when none was recorded.
|
|
121499
|
+
*/
|
|
119948
121500
|
lastSeenAt: (string | null);
|
|
121501
|
+
/**
|
|
121502
|
+
* Earliest tracked activity for this person (ISO 8601, UTC); null when none was recorded.
|
|
121503
|
+
*/
|
|
119949
121504
|
firstSeenAt: (string | null);
|
|
121505
|
+
/**
|
|
121506
|
+
* Lifetime revenue credited to this person under the requested model, one row per currency.
|
|
121507
|
+
*/
|
|
119950
121508
|
attributedRevenue: {
|
|
121509
|
+
/**
|
|
121510
|
+
* ISO 4217 code the amounts below are denominated in, e.g. EUR.
|
|
121511
|
+
*/
|
|
119951
121512
|
currency: string;
|
|
121513
|
+
/**
|
|
121514
|
+
* `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
|
|
121515
|
+
*/
|
|
119952
121516
|
netMinor: number;
|
|
121517
|
+
/**
|
|
121518
|
+
* Billed amount before refunds, in minor units of `currency` (cents for EUR).
|
|
121519
|
+
*/
|
|
119953
121520
|
grossMinor: number;
|
|
121521
|
+
/**
|
|
121522
|
+
* Amount refunded out of `grossMinor`, in minor units of `currency`.
|
|
121523
|
+
*/
|
|
119954
121524
|
refundedMinor: number;
|
|
119955
121525
|
}[];
|
|
119956
121526
|
}[];
|
|
@@ -119958,9 +121528,21 @@ export interface TrackingReportsSourcePeopleOutput {
|
|
|
119958
121528
|
export interface TrackingSnippetsGetInput {
|
|
119959
121529
|
}
|
|
119960
121530
|
export interface TrackingSnippetsGetOutput {
|
|
121531
|
+
/**
|
|
121532
|
+
* Tracking host the snippet sends to — the customer-facing domain events and the bundle are served from.
|
|
121533
|
+
*/
|
|
119961
121534
|
host: string;
|
|
121535
|
+
/**
|
|
121536
|
+
* The tag to paste into every page, verbatim, before </head>. Includes the consent-aware bootstrap; install it unconditionally rather than behind a consent gate.
|
|
121537
|
+
*/
|
|
119962
121538
|
snippet: string;
|
|
121539
|
+
/**
|
|
121540
|
+
* Absolute URL of the tracker bundle the snippet loads; already points at this product's own tracking host.
|
|
121541
|
+
*/
|
|
119963
121542
|
scriptUrl: string;
|
|
121543
|
+
/**
|
|
121544
|
+
* The same tag stripped to the bare script element, for tag managers and CMS fields that reject anything else. Behaves identically; use it only when the full snippet will not fit.
|
|
121545
|
+
*/
|
|
119964
121546
|
minimalSnippet: string;
|
|
119965
121547
|
}
|
|
119966
121548
|
export interface UsersApikeysCreateInput {
|