Article summary
Prepare German +49 mobile phones and manage WS activity time and active days as dated observations with explicit refresh windows.
A Germany WhatsApp activity result should be a dated observation table, not a permanent “active/inactive” label attached to a customer. Resolve +49 and the domestic trunk prefix before interpreting activity fields, then store observation date, rule version and missing-state semantics in CRM.
German mobile numbers do not all share one length
Germany’s Federal Network Agency identifies +49 as the German numbering space and assigns domestic (0)15, (0)16 and (0)17 ranges to mobile services. Its mobile-number length table shows that length varies by block. A single total-digit rule is therefore insufficient.
| Condition | Normalization | Common defect |
|---|---|---|
| Domestic phone beginning with 0 | Use country evidence, add +49 and handle the national prefix | Producing +490… |
| Already contains +49 | Validate range and length | Adding the code twice |
| Fixed or M2M range | Classify by number type | Assuming a personal mobile |
Boundaries of WS Activity output
The task returns phone, activity time, active days and WhatsApp mapped phone. It does not provide conversation content, group membership, purchase intent or marketing permission. A time field describes this observation and does not guarantee future state.
Express “active” as a recency window
| CRM view | Example logic | Important limit |
|---|---|---|
| Recent observation | Within an approved period from checked_at | Display the date |
| Expired observation | Beyond refresh period | Do not call it inactive automatically |
| Unknown | Blank or error | Never coerce to negative |
| Conflict | Unexpected difference between runs | Review manually |
Identify number type before creating TXT
AIPUSH accepts TXT with one phone per line. Internally retain phone_raw, number_type, country_evidence and contact_id. A fixed, service or M2M number does not become a personal mobile contact merely because its +49 structure passes.
Do not overwrite the customer master from Excel
Load the return into activity_observation and append batch_id, checked_at and normalization_version. When mapped phones create one-to-many or many-to-one relationships, create mapping_conflict rather than choosing the latest row over the source phone.
Let the business decision set the refresh interval
Support notifications, a one-time event and long-cycle sales follow-up need different validity periods. Define refresh_after and the expiry action first. On expiry, stop relying on the field for ranking; do not automatically recheck the entire database. Rerun only the smallest subset with a continuing lawful purpose.
Recent activity does not reveal working hours
Cross-border work, travel and shared devices separate country code, time zone and actual schedule. Do not infer employee attendance or choose late-night delivery from an activity timestamp. Obtain contact-time preference from the person or an evidenced service relationship.
Permission retains veto power
A fresh activity observation cannot admit an opted-out, wrong-scope or unexplained phone to marketing. Activity may prioritize an already-approved service process; it cannot manufacture a contact basis.
Quality measures for the Germany run
Report the share passing +49 rules, number-type distribution, activity-field coverage, expired observations, mapping collisions and observation date. If a team knows only the “activity rate” but cannot state its window or denominator, the result is not ready for a decision.
