Data sources
Sources in one project share one identity model and one event table; an unregistered domain or app id is rejected, and the matching web or app analytics shell appears only after you register it. This page does not rotate keys.
ConsoleAll-platform analyticsDataData sourcesThe top is Registered data sources (platform, identifier, note, Last event). When a website source exists, the install snippet is below. If the plan allows non-web platforms, the SDK wizard and remote config are there too.
Metrics & definitions
- Website identifier: no scheme and no path. Subdomains are allowed.
- App identifier: must match the SDK
appId. - Changing an identifier: if the source already has events, history stays on the old id and is not moved. The new id is accepted from the save onward.
- Deleting a source: only stops intake. History stays in reports, and registering the same id again resumes intake.
- Remote config: delivered to mini programs and apps, not to the website. It covers collection on or off, sample rate, flush interval, batch size, config cache, consent required, preset events, control text, performance samples, event / device / control block lists, and a minimum SDK version. Values that match the defaults are not sent.
How to use it
Add a website domain and place the snippet on the site. Keys are created under ConsoleConfigurationSettingsAPI keys; server-side reporting uses a wck_ key with write access. To try read APIs in the browser, use ConsoleAll-platform analyticsDataAPI Playground. Requests from that page use your signed-in session.
Access & limits
Adding, editing, deleting, and saving remote config need Owner or Admin. If the plan does not include a platform, that SDK's events are dropped and the page says so. A platform that is still planned can have an id registered; its install code remains a design draft.
FAQ
Does fixing an identifier migrate history? No. History stays on the old id.
Does turning collection off in remote config lose data? No. The SDK stops uploading and keeps its queue, then sends it after collection is turned back on.
Where are website autocapture switches? In the snippet, not in this remote config.
Data import
Use it to migrate from another analytics tool, add user properties from offline systems or a CRM to profiles, or get a first look at page views from access logs before the script is installed. It is not an ongoing collection channel; for continuous reporting see Data sources.
ConsoleAll-platform analyticsDataData importThe top of the page lists import jobs (latest 50) with File, Type, Rows, Imported, Failed, and Created. Click Import file to start the wizard.
Metrics & definitions
Three types:
| Type | One row is | Use |
|---|---|---|
| CSV events | One event: time, event name, user, page, UTM, and so on | Migrate event data |
| CSV user properties | One user: distinct_id or email or phone, plus custom properties | Fill profiles |
| Nginx / Apache log | One request, combined format | Page views without the SDK |
After upload the type is detected automatically and can be changed. A file holds at most 100,000 rows; split larger ones.
CSV events. Target fields are time, event name, user id, path, full URL, referrer, user_agent, IP, the three UTM fields, and “property.” Columns mapped to property are merged into event properties, with numbers and true or false converted to those types; unmapped columns are ignored. Map at least the event name, or path or URL. A blank event name, or a page-view name, is treated as a page view. Time accepts 10- or 13-digit timestamps, ISO, and common date formats. With no time column the import time is used; a mapped time that cannot be parsed makes the row fail. With no user id mapped, each row becomes an anonymous visitor hashed from its content, so rows cannot be merged into one person. Consecutive events of one user within 30 minutes share a session.
CSV user properties. Map at least one of user id, email, or phone. Email and phone are hashed before they are bound as identities. “Name” writes the user's name, and “property” columns write custom properties.
Nginx / Apache log. No mapping is needed. Visitors are built from IP plus user_agent, and sessions split after 30 minutes. Only GET requests are kept. Static assets (styles, scripts, images, fonts, and similar), crawlers, requests without a user_agent, and 4xx or 5xx responses are skipped. 404 is the exception: it is kept as a __404 event, not as a page view. Skipped and unparsable lines count as “failed.”
Imported events have platform and source import, go through the normal ingest queue, and are included in website reports; filter by the platform dimension to isolate them. Visitors from logs are not merged with SDK visitors.
How to use it
- Choose type and file. CSV and
.log, UTF-8. Large files are uploaded in chunks by the page; a chunk token is valid for 15 minutes and works once. - Confirm the preview and mapping. The page shows the first 20 rows and guesses a mapping from column names:
time,event_name,user_id, andutm_sourceeach find their field. Pick a target field per column, or — ignore —. The preview is kept for 10 minutes; after that, upload again. - Run and read the result. The result shows total, imported, and failed. Data appears in reports after a few seconds to a few minutes.
Example: import a four-column CSV time,event,user_id,page exported from the old system. The wizard maps them to time, event name, user id, and path; confirm and run.
Access & limits
Anyone who can see the project can see the job list. Uploading, previewing, and running need Analyst or above.
FAQ
What if reports show nothing after import? Wait a few minutes, since data goes through the ingest queue. Then check that the report range covers the times in the file and that the platform filter is not excluding import.
Why are there many failed rows? For CSV, check whether the time column parses. For logs, see how many lines are static assets or crawlers; skipped lines also count as failed and are not necessarily errors.
What if the job is stuck in Awaiting confirmation? An expired preview cannot run; upload again. A failed job can be run again while its preview is still valid; a finished job cannot be run twice.
Does importing the same file twice dedupe? No. You get two copies of the data.
Dimension tables
Events often carry only an ID such as sku or campaign_id, while the category and owner live in a business system. A dimension table stores that lookup in the project so it attaches to events without changing tracking.
The list shows Key property, Columns, Rows, Coverage, and Updated. Open a row for Table settings, Upload CSV, row search, and Export CSV.
What works today
You can create, upload, search, and export tables, and view coverage. The server can already split by dim:<table id>.<column>, but the analysis UI does not list dimension-table columns in its split menu yet, so you cannot pick them directly in funnels or event analysis. Until then, use a virtual property from Virtual events & properties for simple mappings.
Metrics & definitions
- Key property: the property name on events used to join. Letters, digits, underscores, and
$only, up to 60 characters. - Columns: at least one when creating, at most 30. Names may include Chinese characters, spaces, and hyphens, up to 40 characters. Duplicates are merged.
- Row cap: 50,000 rows per table. Cell values are kept to 200 characters and keys to 190.
- Join coverage: takes events from the last 7 days that carry the key property, samples up to 50,000, and computes the share whose key is found in the table, shown as matched / sampled. A low value means missing rows or values that are written differently. With no such events in 7 days it shows no data.
How to use it
- Create a table: name (unique within the project), key property, and column names separated by commas or newlines.
- Upload a CSV: UTF-8. The first column, or a column named like the key property or
key, is the key; the rest are attributes. New columns in the header are merged into the list, up to 30 in total. - Choose a mode. Merge overwrites rows with the same key and keeps the others. Replace clears first and then writes, after a confirmation. More than 50,000 rows is rejected; split the file.
- Search rows by key or any column value. Use Export CSV to get the whole table, up to 50,000 rows.
Example: create a “Products” table with key property sku and columns category and price band, then upload a CSV with sku,category,price_band. Check coverage afterwards; if it is below expectation, compare how sku is written in events.
Large files are uploaded in chunks by the page. A chunk token is valid for 15 minutes and works once; if it expires, pick the file again.
Deleting a dimension table deletes all its rows and cannot be undone.
Access & limits
Anyone who can see the project can view the list, rows, and coverage, and export. Creating, changing settings, uploading, and deleting need Analyst or above.
FAQ
What if coverage is very low? Compare the actual key values in events. Case and surrounding spaces must match. Rows may also be missing; upload again in Merge mode.
Why did the columns not change after upload? Only new columns in the CSV header are merged in. An existing column is not removed because the file lacks it.
Can I change the key property? Yes, in Table settings. Coverage is then computed against the new key; uploaded rows stay as they are.