How To

Get a User Access Token for Recruiting Manager

To interact with Facebook's Social Graph you will need a User access token.

  1. Go to Graph API Explorer tool.
  2. Click the Application drop-down on the top right and select the Application that you will be using for the jobs integration. The default app is Graph API Explorer.
  3. Click the Get Token drop-down and select Get User Access Token.
  4. Copy the User access token from the input field. This token allows you to create the Recruiting Manager.

Note: The access token generated for this application is usually active for an hour. Verify your token using the Access Token Debugger.

Get Job Status

To retrieve the status of a job, send a GET request using the job_status and platform_review_status fields.

Sample Request

HttpRequest: GET
URL: https://graph.facebook.com/vX.X/${feed-id}/jobs?access_token=${app_id|secret}&fields=job_status,external_id,platform_review_status,id

Sample Response

{
  "data": [
    {
      "job_status": "DRAFT",
      "external_id": "111219491",
      "platform_review_status": "PENDING",
      "id": "2172866226275828"
    }
  ]
}    
jobs_statusplatform_review_statusComments

OPEN

PENDING

Waiting in the Jobs Review Queue. All jobs go through an automated integrity review and many also go through human review. Pending jobs have not yet been reviewed, but all jobs are reviewed within 24-48 hours.

OPEN

REJECTED

The job has been rejected rejected due to not following our Jobs Policy: See Facebook Platform Policy, Jobs terms (section 23) and Facebook Pages Guidelines, Jobs on Pages (section F). The job will not be posted anywhere on the Facebook platform.

OPEN

APPROVED

Job is live and available at https://www.facebook.com/{job-id}

DRAFT

N/A

Not all input required to create a full-fledged job opening has been provided, and/or there were errors during creation.

Note:

Acceptance and review status does not refer to our Facebook page matching feature. We currently do not provide any data regarding the page matching status of a job through the API.

View your published jobs

To view the published jobs go to www.facebook.com/{id}

GET XML Job Errors

If your Job status is DRAFT after the sync then it means there are issues with your XML file. To check the errors on a job you can use the following request

Sample Request

HttpRequest: GET
URL: https://graph.facebook.com/v3.0/${job_id}?access_token={app_id|secret}&fields=errors,external_id

Sample Response

{
    "errors": [
        "URL field company-url is invalid."
    ],
    "external_id": "31212",
    "id": "2172866226275828"
}

Application Callback Payload

When someone applies for a job on Facebook, Facebook Jobs Platform will call the webhook configured in application-callback-url to notify about the job applicant with the following payload.

Sample Response

{
  "type": "new_application",
  "page_id": 789,
  "job_opening_id": 456,
  "job_application_id": 123,
  "job_external_id": 432
}

Get all Job Application details

To retrieve the job application details make a GET request with the job_application_id to fetch more information about the applicant.

Permissions

An App access token is required.

Sample Request

HttpRequest: GET
URL: https://graph.facebook.com/vX.X/{job_application_id}?fields=name%2Cemail%2Ccity_name%2Ccreated_time%2Ccustom_responses%2Cresume_url%2Ceducation_experiences%7Bschool%2Carea_of_study%2Cstart%2Cend%2Cgraduated%7D%2Cwork_experiences%7Bcompany%2Cposition%2Ccurrent%2Cstart%2Cend%7D%2Cphone_number&access_token=...

Sample Response

{
  "name": "First Last",
  "email": "anonymous@corp.com",
  "city_name": "San Francisco, California",
  "custom_responses": [
    {
      "label": "question 1",
      "response": "answer 1"
    },
    {
      "label": "question 2",
      "response": "answer 2"
    },
    {
      "label": "question 3",
      "response": "answer 3"
    }
  ],
  "education_experiences": {
    "data": [
      {
        "school": "University at Somewhere",
        "area_of_study": "Computer Science",
        "start": {
          "year": 2014
        },
        "end": {
          "year": 2016
        },
        "graduated": false
      },
      {
        "school": "University of Anotherwhere",
        "area_of_study": "Computer Science and Engineering",
        "start": {
          "year": 2010
        },
        "end": {
          "year": 2014
        },
        "graduated": false
      },
      {
        "school": "University of anywhere",
        "area_of_study": "General Coursework",
        "start": {
          "year": 2007
        },
        "end": {
          "year": 2010
        },
        "graduated": false
      }
    ]
  },
  "work_experiences": {
    "data": [
      {
        "company": "One company",
        "position": "Software Engineer",
        "current": true,
        "start": {
          "year": 2017,
          "month": 3
        }
      },
      {
        "company": "Another company",
        "position": "Internship",
        "current": false,
        "start": {
          "year": 2016
        },
        "end": {
          "year": 2016
        }
      }
    ]
  },
  "phone_number": "+1650xxxxxxx",
  "id": "83944172955xxxx",
  "resume_url": "https://download.resumeurl.com/resume"
}

Make Work Experience, Email, or Phone Number Mandatory

Set the following to true or false in your <job> tag to make the fields required. The below example has email, phone and work-experience set to mandatory:

<form-config>
  <email-field>
    <optional>
      <![CDATA[false]]>
    </optional>
  </email-field>
  <phone-number-field>
    <optional>
      <![CDATA[false]]>
    </optional>
  </phone-number-field>
  <work-experience-field>
    <optional>
      <![CDATA[false]]>
    </optional>
  </work-experience-field>
</form-config>

Add Custom/Screening Questions

You can set custom questions during job creation. There are three available questions types, FREE_TEXT, YES_NO, and MULTIPLE_CHOICE. If the custom-questions-url attribute is set in the XML feed, we call this endpoint to fetch the questions you define in the JSON format mentioned below.

FREE_TEXT Custom Question Example

[
  {
    "is_required": true,
    "question_type": "FREE_TEXT",
    "label": "Why are you qualified regarding to the job?",
    "multiple_choice_options": []
  }
]

YES_NO Custom Question Example

[
  {
    "is_required": false,
    "question_type": "YES_NO",
    "label": "Do you have experience within the sales area?",
    "multiple_choice_options": []
  }
]

MULTIPLE_CHOICE Custom Question Example

[
  {
    "is_required": true,
    "question_type": "MULTIPLE_CHOICE",
    "label": "Which of the following skills are you skillful at?",
    "multiple_choice_options": [
       "skill 1",
       "skill 2",
       "skill 3",
       "skill 4"
    ]
  }
]

Set of Custom Questions Example

[
  {
    "is_required": true,
    "question_type": "FREE_TEXT",
    "label": "Why are you qualified regarding to the job?",
    "multiple_choice_options": []
  },
  {
    "is_required": false,
    "question_type": "YES_NO",
    "label": "Do you have experience within the sales area?",
    "multiple_choice_options": []
  },
  {
    "is_required": true,
    "question_type": "MULTIPLE_CHOICE",
    "label": "Which of the following skills are you skillful at?",
    "multiple_choice_options": [
      "skill 1",
      "skill 2",
      "skill 3",
      "skill 4"
    ]
  } 
]

Include a Partner or Employer's Privacy Policy

Recruiting Manager has an attribute `data_policy_url` that allows you to define the data policy for the company posting the job. Refer to Creating Recruiting Manager section of the Getting Started Guide for more information on adding company privacy policy. And if the Hiring Company requires a specific data policy to be included in the flow use the `company-data-policy-url` tag.

Select a Job's Page

Use the <company-facebook-url> to link a Job to a Facebook Page. If you do not have a Facebook Page URL provide the company info when you create your job. This allows us to perform page matching in the background and associate the right page. It is important to provide accurate company information for better page matching performance.

Note: If you choose not to include this field (it is optional), do not include the XML tag, otherwise it may cause the job posting to fail.

Migrate Existing Feeds

Each feed must be linked to a Recruiting Manager. If you currently have active job-feeds reach out to your partner manager with your Recruiting Manager Id and Job Feed ID's. We will link these two in our backend.

Salary Information

To represent salary information, provide the XML tag <salary>.

In order to provide no salary information, simply do not provide the <salary> or any other salary related tags in your XML feed. Do not provide a default or zero value.

Alternatively, you can provide <salary-min> and <salary-max>. If you provide both fields, the value stored in <salary> will be overridden and a salary range will be displayed instead.

Delete Jobs

In order to remove an individual job, simply remove it from the XML representation of that job from your feed. Upon the next scrape, that job will be removed from the Facebook platform. Note that deleting a job will also delete all corresponding job applications - ensure that you have received the new applications first!

Delete a Feed

Deleting a job feed will delete all of the corresponding jobs. You can delete a job feed via the API. Find more details on the job feed API here. Note that deleting a job will also delete all corresponding job applications - ensure that you have received the new applications first!

Common Errors

A few of our most common errors preventing jobs from being successfully posted on our platform are listed below, with some recommendations for debugging.

Error MessageExplanationSuggested Actions

Your job's location is invalid.

Our geolocation service did not manage to determine the location of the job based on the data you provided us.

First of all, ensure that the data provided is consistent. If we receive a posting indicating "Toronto, United States" (note: Toronto is a city in Canada, not in the United States), this error will be thrown. Secondly, provide as much location information as possible, and ensure there are no errors in formatting. Providing more detailed, accurate location information generally prevents this error from being thrown.

Your job's custom questions were unable to be added. OR The custom questions download failed because the request timed out.

Most of the time this is NOT a formatting issue - it is caused by our inability to hit your server to collect the custom questions.

Refer to the custom questions section of this page for more details. If we are hitting your sever and failing, it is possible that your server cannot handle the load of requests and either throttling or timeout-ing the requests, resulting in us not being able to receive the custom questions. Either set up more servers or set your throttle limit higher in order to handle the load.

URL field {uri} is invalid.

One of the URLs provided to us (note: there are a variety of different fields that can contain URLS) was invalid.

The vast majority of the time this is because full URLs are not provided. We require a full address, including "https://", in order to consider a URL valid. For example, "https://www.facebook.com" would be a valid url, while "www.facebook.com" or "facebook.com" would not be.

Job to Page Matching Failures

At this current time, we will not provide you any errors when a job to Facebook page match - note this will not prevent the job from being posted or distributed, even if it is not matched successfully to a page.

Although page match can fail for variety of reasons, one frequent and easily solvable issue involves the field "company-id". Our system only allows one company-id per Facebook page. If you have multiple different company-ids that are intended to match to the same page, only jobs associated with the first company-id will match, and the others will fail (even if you provide the correct Facebook page URL). The best practice is to ensure that company-id has a 1:1 relationship with each Facebook page.

Learn More