Why a job is invalid, and what to tell the customer

Explains: D-DIST-10, D-DIST-17, D-URL-01, D-URL-08, D-URL-09, D-URL-11, D-CPC-13, D-CPC-26, D-JL-08, specs/002-xml-feed-import#req-008, specs/002-xml-feed-import#req-009, specs/002-xml-feed-import#req-011, specs/002-xml-feed-import#req-012, specs/002-xml-feed-import#req-013

An import keeps every job whose row it can import from the customer's feed, but marks a job invalid when its link is not one a job seeker can safely be sent to, or when the price it states cannot be read. An invalid job is counted on the import, is never matched to any campaign and never sent to any publisher, and the import itself still succeeds (specs/002 REQ-009, D-DIST-10). The customer is responsible for what its feed says, so the fix is theirs whenever the value came from their feed: the next import that carries a good value makes the job valid again, and the customer's latest record always wins, even when it is wrong (D-DIST-17).

A job carries every reason it is invalid for at once, at most one about its link plus one about its price (D-CPC-13, specs/002 REQ-011). Open the feed to see how many jobs are invalid right now, under each reason, with up to five examples each and the value the feed sent, cut short when it is long and with any username or password shown as [credentials] (specs/002 REQ-012). To answer a customer about one job, look it up by its reference: you see whether it is valid and every reason it is invalid, even for a job that has never once been valid (specs/002 REQ-013).

A job that was valid and becomes invalid on a later import leaves every publisher's feed; links that publishers already hold keep sending job seekers to the last good address, under the usual 24-hour and 7/30 rules. A job that is invalid from its first import is never sent anywhere (D-JL-08).

A valid link is a full web address starting http:// or https://, on a real domain name, with no username, password or hidden characters in it. Ports, international domain names, co.uk and underscores in a host name are all fine (specs/002 REQ-009, D-URL-11).

The link is missing

The feed sent nothing for this job's link, or the link field is not in this job at all.

Tell the customer: every job in their feed needs the link to the page where a person applies.

Not a web address ClickFactor can read

The link is not a full web address: it has no scheme at all (nothing like https:// at the start), is plain text, or is broken in a way no browser could follow (D-URL-01).

Tell the customer: each job's link must be a complete address such as https://careers.example.com/jobs/123.

Not an http or https address

The link starts with something other than http:// or https://, such as ftp: or javascript:. ClickFactor only sends job seekers to web pages (D-URL-01).

Tell the customer: the link must be an ordinary web page address starting https://.

Hidden control characters

The link contains invisible characters, such as a tab or a line break (D-URL-01).

Tell the customer: remove the hidden characters from the job's link; it should be one unbroken line.

A username or password in the link

The link carries a username or password before the address, as in https://name:secret@…. ClickFactor never sends a job seeker to such a link (D-URL-01).

Tell the customer: take the username and password out of the link.

The host is not a domain name

The part after https:// is not a real domain: an unfilled template such as {{domain}}, the word undefined, a single word such as jobs, or an empty part such as .com (D-URL-08).

Tell the customer: their feed is sending a placeholder instead of their site's address; the link must name a real domain such as careers.example.com.

The link points at an IP address

The link names a numeric address such as 10.0.0.1, in any spelling, instead of a domain name. No real careers site is reached that way in production, so the import marks it invalid (D-URL-09).

Tell the customer: use their site's domain name in the link, not its numeric address.

The link points at a local name

The link points at localhost, or a name under it, which only reaches the computer the job seeker is using (D-URL-09).

Tell the customer: the job's link must point at their public site, not at localhost.

A problem with the job's price

The CPC is not a plain number

The customer's feed states a price per click for this job that ClickFactor cannot read (specs/002 REQ-008, REQ-011). A readable price is a plain number with at most one decimal point, optionally after a $: 1.50, $1.50, 3 and .50 are all read. A comma (1,50 or 1,500.00), another currency (€1.50), a minus sign, a word such as free, a zero, a price too small to round to $0.0001, or one above $99,999,999.9999 is not.

The job is withheld from every campaign, whatever its bidding, until the feed is fixed: ClickFactor never guesses what a customer meant to pay (D-CPC-26). A fixed price set in the feed's mapping replaces whatever the feed says for every job (specs/002 REQ-011). Without one, a job whose feed says nothing for its price is not invalid: it takes the customer's default advertiser CPC.

Tell the customer: the price for this job must be a plain number in dollars, such as 1.50; the console shows the value their feed sent.