Feeds › Mobile Phones format
Mobile Phones feed format
The MobilePhonesParser handles any feed whose Category column resolves to the Mobile Phones category. It inherits every shared feed rule (HTTPS, Device ID cap, status enforcement, 50p rounding, etc.) and adds the category-specific column schema and whitelists documented on this page.
Column schema
The header row is case-sensitive and column order is flexible. Required columns fail the whole feed if missing; optional columns can be omitted without breaking ingest.
Required columns
| Column | Rule |
|---|---|
| Device ID | Unique per marchant, 1–128 characters. Duplicates within a single CSV are rejected. |
| Brand | Non-empty. Matched against the catalogue (Apple, Samsung, …). |
| Model | Non-empty. Becomes the product title. |
| Category | Must match one of the Category aliases below. |
| Condition | Must resolve to one of the 5 base conditions (whitelist below). |
| Network | Must be on the whitelist below. |
| Storage | Normalised to NNGB / NNTB uppercase. |
| Price | Numeric, greater than 0, rounded to the nearest 50p. |
| Status | active or inactive. |
Optional columns
| Column | Notes |
|---|---|
| Image | URL to a product image. HTTPS recommended. |
| Last Updated | ISO-8601 timestamp. Informational only today. |
Accepted Category values
The parser matches case-insensitively on the following aliases. Anything else is rejected with malformed.
| Canonical | Accepted aliases |
|---|---|
| mobile phones | mobile phone, smartphone, smartphones, phone, phones, cellular |
Networks (whitelist)
Network values are case-insensitive. Aliases are resolved to the canonical slug on ingest. Anything not in this table is rejected with invalid_network.
| Canonical | Accepted aliases |
|---|---|
| unlocked | unlocked |
| other | other |
| ee | ee |
| o2 | o2 |
| three | three, 3 |
| vodafone | vodafone |
| giffgaff | giffgaff |
| tesco mobile | tesco, tesco mobile |
| virgin | virgin, virgin mobile, virgin media |
| orange | orange |
| t-mobile | t-mobile, tmobile |
Conditions (5 base)
Every row must resolve to one of the five base conditions. Supply your own label in the CSV — PriceFirst maps it via the alias table. Rows that don't resolve are rejected with invalid_condition.
| Canonical | Accepted aliases |
|---|---|
| new | new, brand new, pristine, mint |
| excellent | excellent, very good, like new |
| good | good, fair, average |
| poor | poor, faulty, damaged |
| broken | broken, beyond economic repair, ber |
Storage
- Normalised to uppercase (
128gb → 128GB). - Plain numbers get
GBappended (128 → 128GB). - Use
TBexplicitly for larger values (1TB,2TB).
Sample CSV
Device ID,Brand,Model,Category,Condition,Network,Storage,Price,Image,Status,Last Updated
PF-MOB-0001,Apple,iPhone 16e,Mobile Phone,Excellent,Unlocked,128GB,350.00,,active,2025-03-24T11:40:44Z
PF-MOB-0002,Apple,iPhone 16e,Mobile Phone,Excellent,Unlocked,256GB,410.00,,active,2025-03-24T11:40:44Z
PF-MOB-0003,Samsung,Galaxy S24,Mobile Phone,Good,EE,256GB,285.50,,active,2025-03-24T11:40:44ZAttribute normalisation (what's stored)
Each accepted row is stored with the following normalised attributes. The marchant's raw labels are not retained beyond the marchants price record.
| Attribute | Source column | Normalisation |
|---|---|---|
| storage | Storage | Uppercase, GB appended when the value is a plain number. |
| network | Network | Lowercased and resolved against the network whitelist above. |
| condition | Condition | Lowercased and resolved to one of the 5 base conditions. |
Always validate your Mobile Phones feed with the Feed Validator before enabling recurring resync. It runs this parser in dry-run mode and returns per-row errors with line numbers and codes.