An XML file is used to describe currently available jobs openings. All valid tags are described below. Tag names must be given exactly as below, in English, while text in tag values can be given in any language, using UTF-8 encoding.
See the sample feed below for a complete working example.
Note that all string tags must have their values wrapped as CDATA, for example <![CDATA[Some Data]]>
.
The <source>
tag is the topmost tag in a feed. The following sub-tags are valid within it.
Name | Description |
---|---|
Type: string | Required Max characters: 1000 The name of your organization. Plain text only. ™ |
Type: string | Required Max characters: 1000 The URL of your organizations's website, including leading Example: |
Type: string | Optional Max characters: 100 The date this feed was last updated, in RFC3339 format with a space separator. Example: |
Type: wrapper | Required Each instance of this tag defines a job. See the full specification below. Each feed XML file cannot contain more than 30,000 jobs. To publish more than 30,000 jobs, we recommend to split them into multiple feeds and maintain 1:1 mapping between the jobs and |
The <job>
tag represents a singe job opening. The following sub-tags are valid within it.
Name | Description |
---|---|
Type: string | Required Max characters: 1000 The job title. Plain text only. Example: |
Type: string | Required Max characters: 1000 The date the job was posted, in RFC3339 format with a space separator. Example: |
Type: string | Required Max characters: 1000 A unique ID of your choosing that distinguishes this job from all other jobs you provide Facebook. Must be unique across all jobs and across all your XML feeds. Example: |
Type: string | Required Max characters: 50000 The job description. Support basic HTML tags. Supported tags are
Newline characters are respected to start new lines. See sample XML below. Example:
|
Type: string | Required Max characters: 1000 A unique ID of your choosing that distinguishes this hiring company from all other hiring companies you provide in your XML feeds. Example: Jobs for the same company may span multiple XML feeds as long as the All |
Type: string | Required Max characters: 1000 The name of the hiring company. Note this is usually not your company, but the company that is offering the job. Plain text only. Example: |
Type: string | Optional Max characters: 1000 The full address of the hiring company. Note that the job itself may be at a different address, specified by Example: |
Type: string | Required Max characters: 1000 The URL of the hiring company's webpage, including leading Example: |
Type: string | Optional & Recommended Max characters: 1000 The URL of the hiring company's Facebook page, including leading This URL will be used to match this job to a company's Facebook page, so the job will appear on that page. If Note that matching can be altered by the Example: |
Type: string | Optional Determines whether or not jobs from this company will be matched to a Facebook page. Supported values:
This applies to all jobs from this company. |
Type: string | Optional & Recommended Supported values:
|
Type: string | Optional Indicates that this job can be performed remotely. Supported values:
|
Type: string | Optional Max characters: 1000 Provide a photo for this job in the job's detail view in Facebook's Job Browser. If the job is not matched to a Facebook page, no photo will be shown. Your app must be in Live mode to use this tag.
Example: |
Type: string | Optional & Recommended Max characters: 1000 URL containing the data policy of the hiring company. A link to this URL will be shown when a user applies to this job. Include leading Example: |
Type: string | Optional & Recommended Max characters: 1000 Full address of where the job is located. Note that the hiring company may have a different address, specified by Example: |
Type: string | Optional Max characters: 1000 House number where the job is located. Example: |
Type: string | Optional Max characters: 1000 Name of the street where job is located. Example: |
Type: string | Optional Max characters: 1000 City where the job is located. Example: |
Type: string | Optional Max characters: 1000 Region where the job is located. In the United States this is the USPS two letter state abbreviation. Example: |
Type: string | Required Max characters: 1000 2-letter ISO 3166-1 code for country where the job is located. A full English spelling of the country name may also work, but is not recommended. Example: |
Type: string | Optional Max characters: 1000 Postal code for where the job is located. In the United States this is the zip code. Example: |
Type: number | Optional Max characters: 1000 Salary of this job, without currency or separators. Digits and decimal point only. Example: If the job is unpaid, then leave out all salary related tags. |
Type: number | Optional Max characters: 1000 Minimum salary offered for this job, without currency or separators. Digits and decimal point only. Example: Do not use if you provide the |
Type: string | Required if Max characters: 1000 Maximum salary offered for this job, without currency or separators. Digits and decimal point only. Example: |
Type: string | Required if The 3 letter ISO 4217 code of the currency that the salary tags are denominated in. Example: |
Type: string | Required if The type of salary offered for this job. Supported values: |
Type: string | Optional The type of benefits provided by this job, separatd by comma. Supported values: |
Type: string | Optional The type of schedules used by this job, separatd by comma. Supported values: |
Type: string | Optional Whether the job requires prior experience. Supported values: |
Type: wrapper | Required A wrapper tag that defines how applications to this job are handled. See the full specification below. |
Name | Description |
---|---|
Type: string | Required Max characters: 1000 A URL we will notify whenever your job receives an application. Include leading See Application Callback for the full documentation of this feature. Example: |
Type: string | Optional Max characters: 1000 A URL endpoint containing questions you define in the JSON. Include leading See Custom Questions for the full documentation of this feature. Example: |
Type: wrapper | Optional This tag may contain tags to customize the job's application. See form-config-tag. |
The contents of the form-config
tag may be used to customize the application form that job seekers see for this job.
Name | Description |
---|---|
Type: wrapper | Optional Determines whether the email field will be optional. Set to Supported values:
|
Type: wrapper | Optional Determines whether the education experience field will be optional. Set to Supported values:
|
Type: wrapper | Optional Determines whether the work experience field will be optional. Set to Supported values:
|
Type: wrapper | Optional Determines whether the phone number field will be optional. Set to Supported values:
|
Type: wrapper | Optional Determines whether the resume attachment field will be shown, and controls whether it is optional or required. Resumes may be PDF files or photos from the mobile device. See Job Attachment Fields for information on how to retrieve resume attachments. Supported values:
Resume attachments are currently only supported on mobile. If you set <optional> to FALSE, the job will only appear on mobile interfaces.If the <optional> tag is not present, the resume attachment field will not be shown. |
Below is a minimal valid job XML file. A longer file with with multiple jobs is available here.
<?xml version="1.0" encoding="utf-8"?> <source> <!-- Publisher and feed info --> <publisher-name>Your ATS</publisher-name> <publisher-url>http://www.yourdomain.com</publisher-url> <last-build-date>2020-11-06 18:47:08 +0000</last-build-date> <!-- Job tag. Repeat for each job opening. --> <job> <!-- Basic job info --> <title><![CDATA[Mechanical Engineer]]></title> <date><![CDATA[2020-11-06 18:47:08 +0000]]></date> <id><![CDATA[unique11111]]></id> <photo-url><![CDATA[http://www.hiringcompany.com/photo123.jpg]]></photo-url> <description><![CDATA[Mechanical Engineer Help develop a perpetual motion machine. Great perks. ]]></description> <job-type><![CDATA[FULL_TIME]]></job-type> <!-- Company info --> <company-name><![CDATA[Hiring Company, Ltd.]]></company-name> <company-id><![CDATA[xyz123]]></company-id> <company-full-address><![CDATA[1 Hacker Way, Menlo Park, CA, 94025]]></company-full-address> <company-facebook-url> <![CDATA[https://www.facebook.com/hiringcompany]]> </company-facebook-url> <company-data-policy-url> <![CDATA[https://www.hiringcompany.com/policy.php]]> </company-data-policy-url> <company-url><![CDATA[https://hiringcompany.com]]></company-url> <company-page-matching-approach><![CDATA[STANDARD]]></company-page-matching-approach> <!-- Location --> <full-address><![CDATA[1 Hacker Way, Menlo Park, CA, 94025]]></full-address> <country><![CDATA[US]]></country> <!-- Salary --> <salary-min><![CDATA[100000]]></salary-min> <salary-max><![CDATA[200000]]></salary-max> <salary-currency><![CDATA[USD]]></salary-currency> <salary-type><![CDATA[ANNUALLY]]></salary-type> <!-- Integration configuration --> <facebook-apply-data> <application-callback-url> <![CDATA[https://yourdomain.com/callback]]> </application-callback-url> <custom-questions-url> <![CDATA[https://yourdomain.com/custom-questions]]> </custom-questions-url> <form-config> <email-field> <optional>FALSE</optional> </email-field> <phone-number-field> <optional>FALSE</optional> </phone-number-field> <work-experience-field> <optional>FALSE</optional> </work-experience-field> </form-config> </facebook-apply-data> </job> <!-- ...add more <job> tags for additional jobs --> </source>
To check your feed for basic syntax errors, you can validate it against the XSD schema. You will need a program that can validate XML. A popular choice is xmllint which is pre-installed on MacOS and many Linux distributions.
The jobs schema XSD file is located at https://fb.me/jobs_feed_validator.xsd
Example terminal command to validate a published feed at url https://fb.me/sample_job_feed_with_errors.xml
:
curl -LsS "https://fb.me/sample_job_feed_with_errors.xml" > "/tmp/job_feed.xml" && \ curl -LsS "https://fb.me/jobs_feed_validator.xsd" > "/tmp/jobs_feed_validator.xsd" && \ xmllint --schema "/tmp/jobs_feed_validator.xsd" --noout "/tmp/job_feed.xml"
Example terminal command to validate a local file named example_job_feed.xml
:
curl -LsS "https://fb.me/jobs_feed_validator.xsd" > "/tmp/jobs_feed_validator.xsd" && \ xmllint --schema "/tmp/jobs_feed_validator.xsd" --noout "example_job_feed.xml"
If everything looks good, this will output example_job_feed.xml validates.
Otherwise it will list validation problems along with the line number where the problem was found, similar to other linting programs. In the example below, an invalid URL for the <company-url>
tag was found on line 459:
/tmp/job_feed.xml:459: element company-url: Schemas validity error : Element 'company-url': 'htpts://example.com' is not a valid value of the atomic type 'urlString'.