Mostly, with File Import or Offline Collect API, we join offline data to online data based on a visitor stitching key.
However, it is possible to do this without the need for a stitching key. Consider an example use case - the client wants to pass us data that's calculated after, or even during, an anonymous user's online visit, to store in the visitor profile.
The key here is tealium_visitor_id. On any incoming event into AudienceStream, this is how the Visitor Processor first decides which visitor profile to associate this event with, before any visitor stitching is considered - it is the anonymous identifier for that event.
For Collect API calls, you can simply specify the tealium_visitor_id in the call, as follows;
"tealium_account": "<<the account>",
"tealium_profile": "<<the profile>>",