採用企業と Indeed との連携

本リソースには、採用企業向けの Indeed 連携の手順が記載されています。連携の有無に関わらず、XMLを提供する採用用企業はこのガイドラインに従う必要があります。採用企業を代理するサードパーティパートナー(人材紹介会社、採用代行会社、プログラマティックプラットフォーム、広告代理店など)は、このページで概説するXMLガイドラインに従う必要があります。

本リソースの使用方法

Indeed と適切に連携するには、本リソースの全文をよくお読みください。ご不明な点がございましたら、クライアントサクセス担当者までお問い合わせください。担当者が指定されていない場合は、こちらのWebフォームからお問い合わせください。

以下の順序で連携することが重要です。

  1. XML Jobフィード
  2. Indeed エントリー(IA)の追加
  3. 応募データの受信スクリーニング用の質問
  4. エンドツーエンドで連携をテストして、XMLの信頼性、Indeed エントリーの利用、そしてスクリーニング用の質問の取得を、企業側で継続的に監視できることを確認

(Go back to the top)


XML Jobフィード

Indeed の XML フィードは、Indeed サイト上に表示される求人情報をリストにします。お客様に XML フィードのメンテナンスを行っていただくことで、求人がどのように表示されるかを管理することができます。また、Indeed エントリーのラベルを求人に掲示することができます。

XMLフィードの利用

すべての求人情報を含むXMLドキュメントを作成し、メンテナンスを行って下さい。Indeed は以下の3つの手段のいずれかによって、ファイルの変更をモニターしています。

  • XML URLのクローリング
  • 企業がホストするFTPサイトのクローリング(SFTPもサポート対象)
  • Indeed のFTPサーバーに直接ファイルを受信(zipファイルを推奨)

重要:採用ページに掲載されているすべての求人をXMLフィードに含めてください。Indeed は、情報が不十分なXMLフィードや、一部の求人情報のみを対象としたオプトインには対応しておりません。すべての求人情報が含まれていないXMLファイルは拒否されるか、求職者への露出が制限される可能性があります。XMLには、お客様のWebサイトから求職者が入手できる情報がすべて含まれている必要があります。例えば、Webサイトで給与情報が示されているのであれば、XMLフィードには給与を指定する要素、すなわち<salary>を含める必要があります。Webサイトで給与情報が示されていないのであれば、その必要はありません。

XMLフィードの例

1件の求人を含む基本的なXMLフィードの例を以下に示します。

例:基本的なXMLフィード

<?xml version="1.0" encoding="utf-8"?>
<source>
    <publisher>Example Job Site</publisher>
    <publisherurl>http://www.example.com</publisherurl>
    <lastBuildDate>Fri, 10 Dec 2008 22:49:39 GMT</lastBuildDate>
    <job>
        <title><![CDATA[Sales Executive]]></title>
        <date><![CDATA[Fri, 19 Dec 2014 22:49:39 GMT]]></date>
        <referencenumber><![CDATA[unique123131]]></referencenumber>
        <url>
            <![CDATA[http://www.examplesite.com/viewjob.cfm?jobid=unique123131&source=Indeed]]>
        </url>
        <company><![CDATA[ABC Hospital]]></company>
        <city><![CDATA[Phoenix]]></city>
        <state><![CDATA[AZ]]></state>
        <country><![CDATA[US]]></country>
        <postalcode><![CDATA[85003]]></postalcode>
        <streetaddress><![CDATA[123 fake street Phoenix AZ, 85003]]></streetaddress> 
        <email><![CDATA[example@abccorp.com]]></email> 
        <description>
            <![CDATA[1~3年のセールスの経験をお持ちで、取引成立に向けて全力で挑める方、
            セールス業界で、急成長を続けるわくわくした環境でのキャリアを
            お探しの方からのご連絡をお待ちしています。
            [...]ストックオプションや充実した福利厚生を含む、
            魅力的な給与体系が用意されています。
            急成長を続ける企業として、私たちはわくわくしてやりがいのある仕事の機会を提供しています。
            成長を続ける弊社内には、キャリア向上のさまざまなチャンスがあります。 ]]>         
        </description>
        <salary><![CDATA[$50K per year]]></salary>
        <education><![CDATA[Bachelors]]></education>
        <jobtype><![CDATA[fulltime, parttime]]></jobtype>
        <category><![CDATA[Category1, Category2, CategoryN]]></category>
        <experience><![CDATA[5+ years]]></experience>
        <indeed-apply-data>COVERED IN A LATER SECTION</indeed-apply-data>
        </job>
        </source>

XML フィードの要素(エレメント)

XML フィードは、フィードごとに1回使用されている基本的な要素と、各求人フィードで使用されている求人の要素のセットを含みます。

基本的な要素


基本的な要素の表
要素 (エレメント) 必須/任意 内容 値の例
<?xml ?> 必須 XML宣言 <?xml version="1.0" encoding="utf-8"?>
<source> 必須 XML フィードのドキュメントのためのルートノード。
<publisher> 任意 この求人を投稿している企業の名前。 貴社のお名前
<publisherurl> 任意 この求人を投稿している企業のURL。 http://www.example.com
<job> 必須 求人固有のメタデータをすべて含みます。Indeed で表示するには、各求人に<job>の要素を1つ含めてください。 以下の項目に記載した詳細をご確認ください。

求人情報の要素

注意

  • 求人内容は、オリジナルのWebサイトと同様に、生HTMLとして<![CDATA[]]>セクションに記述する必要があります。HTMLは、XMLエンティティやエスケープ文字(&lt;、&gt;、&amp;)ではなく、生の文字(<、>、&)として指定する必要があります。
  • 以下のガイドラインに従っていただけない場合、お客様の求人が Indeed の検索結果に表示されなくなる可能性がありますのでご注意ください。必須フィールドが欠落している求人や、Indeed の掲載基準を満たしていない求人は、破棄されるか非表示になる可能性があります。掲載する求人に不安な点がある場合は、Indeed の掲載基準をご確認いただきますようお願いいたします。サポートが必要な場合は、採用企業様向けのページからお問い合わせください。

求人の要素一覧
要素 必須/任意 内容 値の例
<title> 必須 職種名。職種名以外の雇用形態、勤務地、働き方に関する情報、キャッチコピーや見出しの入力はできません。 <![CDATA[セールス担当]]>
<date> 必須 求人が最初に掲載された日。
注意:貴社のサイトにこの日付が掲載されている場合、サイトでの日付とXML内での日付が一致している必要があります。
<![CDATA[Fri, 19 Dec 2014 22:49:39 GMT]]>
<referencenumber> 必須 この求人固有の識別番号。固有の案件として識別するため、設定後に変更はしないでください。 <![CDATA[unique123131]]>
<url> 必須 貴社のサイト上での該当求人の URL。求人応募のページではなく、仕事内容を記載したページの URL を記入してください。Indeed から流入したクリック数を追跡するには、source=Indeedトークンを含めてください。 <![CDATA[http://www.examplesite.com/viewjob.cfm? jobid=unique123131&source=Indeed]]>
<company> 必須 検索結果に表示される企業名。例えば、同じ企業の元で複数の店舗を経営している子会社やフランチャイズがある場合、<company>には、求職者がすぐに理解できるような、最もシンプルな形の事業名またはブランド名を記載してください。 <![CDATA[[Wavewood病院]]>
<city> 必須 求人の勤務地の市区町村。 <![CDATA[港区]]>
<state> 必須 求人の勤務地の都道府県。 <![CDATA[東京都]]>
<station> 求人詳細ページに記載されている場合は必須 近くに駅がない場合は必要ありません。複数駅を表記した場合は、その中の1つが自動抽出されます。できれば一番表示したい駅名のみ1つ記載ください。 <![CDATA[赤羽橋駅]]>
<country> 必須 求人の勤務地の国名。 <![CDATA[JP]]>
<postalcode> 求人詳細ページに記載されている場合は、必須 求人の勤務地の郵便番号。 <![CDATA[100-8602]]>
<streetaddress> 求人詳細ページに記載されている場合は、必須 求人の主要な勤務地の住所。町名と番地を入れてください。可能であれば、都道府県、市区町村、郵便番号など、住所をすべて入力します。住所は、勤務地に基づく求人検索の精度を上げるために Indeed が使用し、求職者に表示されることもあります。 <![CDATA[〒108-0073 東京都港区三田1-4-1]]>
<email> 任意 Indeed エントリー経由の応募の送信先にするメールアドレス。 <![CDATA[example@abccorp.com]]>
<description> 必須 求人の職務内容。<description>に記載される情報と<url>ページに記載される情報を必ず一致させてください。このフィールドに基づくプレーンテキストが Indeed の求職者に表示されます。そのためこのフィールドには、学歴や経験など、XMLの他のフィールドでも提供されるテキストを含め、求人関連のすべての情報が含まれていることが必要です。
注意:仕事内容はHTML形式で記載する必要があります。対応しているHTML要素の一覧については、フォーマットのガイドラインをご確認ください。
<![CDATA[1~3年のセールスの経験を お持ちの方。 [...] ]]>
<salary> 必須 給与情報。Indeedでは、時給・日給・月給・年収で設定できます。一覧表で表示されるため表記例に基づきシンプルな形で記載ください。 <![CDATA[日給10,000円]]>
<![CDATA[年収400万円~500万円]]>
<education> 求人詳細ページに記載されている場合は、必須 該当する求人に求められる最終学歴。 <![CDATA[四年制大学卒業]]>
<jobtype> 求人詳細ページに記載されている場合は、必須 求人の雇用形態(フルタイムまたはパートタイム)。 <![CDATA[フルタイム、パートタイム]]>
<category> 任意 カンマで区切られた求人のカテゴリのリスト。検索中の求職者を誘導するために使用されます。この要素は必須ではありませんが、求人を管理するために、また求人の詳細ページに記載されている追加情報を反映するために、この要素を含めることを強くお勧めします。例えば、この要素に施設や部門に関する情報を追加できます。 <![CDATA[カテゴリ1, カテゴリ2, カテゴリN]]>
<experience> 求人詳細ページに記載されている場合は、必須 求人応募の際に望ましい経験。 <![CDATA[5年以上]]>
<tracking_url> 任意 Indeed から流入したクリック数を追跡するための、各求人に固有のURL。Indeed は、この求人がクリックされるたびに、このURLに対してGETリクエストを作成します。 <![CDATA[https://www.examplesite.com/ trackjob1234]]>
<lastactivitydate> 任意 採用企業のシステム内で行われた、この求人に対するアクションの最新のタイムスタンプ。応募者の選考や求人の修正などのアクションがあります。 <![CDATA[Fri, 19 Dec 2014 22:49:39 GMT]]>

新エレメント設定について

既存のエレメントに加えて下記エレメントを新しく設定できます。(任意)


新エレメント設定の表
要素 (エレメント) 内容
<timeshift> 勤務時間、作業時間、シフトなど
<subwayaccess> 交通アクセス情報、’○○○駅から○分’など
<rawlocation> ‘番地やビルまでの詳細勤務地情報’
<expdate> ‘終了掲載日’
<benefits> 待遇・福利厚生、’交通費全額支給’など
<rawsalary> 詳細な給与情報
<hires> 採用予定人数
<keywords> ‘未経験OK’、‘残業無し’などのキーワードリスト
※Indeedの検索結果、詳細案件ページで表示したい文言に対応するコード表があり、Feedに該当コードを表記することでタグ情報を表示できます。
※コード表は、Indeed担当にお問い合わせください。
<imageUrls> 写真のURL
  • キーワード、イメージURLについてはカンマ区切りで複数記載できます。
  • 新エレメントについては現在テストを行いつつ Indeed へ反映を進めています。記載いただいたものが必ず表示されるとは限りません。詳しくは担当のアライアンスマネジャーにお問い合わせください。
  • 既存エレメント、新エレメントともに、新しくエレメントを追加(修正)した場合、Indeed側で該当エレメントの追加設定が必要になります。変更した際はその旨お教えください。

その他注意事項

  • フィードは1日1回は更新をお願いします。
  • XMLフィードの内容と求人詳細ページの内容が全く同じ情報になるように作成をお願いします。
  • テスト案件、求人サイトの案件、ショッピングモールの案件は含めないようにお願いします。

フォーマットのガイドライン

XML内の求人情報は、Webサイトで使用されているものと同じHTMLフォーマットで記載してください。フォーマットはCDATAタグの中に記述してください。

注意:Indeed はエスケープを使用したHTMLエンティティには対応していません。たとえば、&lt;ではなく<を使用してください。以下は対応しているタグの一部です。


フォーマットのガイドラインの表
タグ 説明
<b> 太字
<h1><h6> ヘッダー。 注意:ヘッダータグ内のテキストは、Indeed のページ上で表示される際には、一定のサイズに変換されます。
<br> 改行。 注意:Indeed では、自動的に段落間に改行が挿入されます。
<p> 段落
<ul> 順序のないリスト(箇条書き)
<li> リストアイテム
<strong> 太字
<em> 強調文字(斜体)
<table><tbody><th><tr><td> 基本的な表

また、以下のような算出スタイルノードに対応しています。

  • <font style="font-weight:bold">Some bold text</font>は太字で表示されます。
  • <div><h2 style="display:inline">Label: </h2>Text</div>は 「Label: Text」をインラインで表示します。ただし<h2>は、デフォルトではブロック要素となります。
  • 段落タグの上下のmarginおよびpaddingの値は、必ず正数を入力してください。これは<p>タグのデフォルトの挙動です。

フォーマットの例

仕事内容のフォーマットの例

<description><![CDATA[
<h2 id="job_description">仕事内容</h2>
 <ul>
 <li>1~3年のセールスの経験をお持ちの方。</li>
 <li> 取引成立に向けて全力で挑める方。 </li>
 <li>セールス業界で、急成長を続けるわくわくした環境でのキャリアをお探しの方。</li></ul>
 <font style="font-weight:bold">福利厚生</font>
 <p>ストックオプションや充実した福利厚生を含む、魅力的な給与体系が用意されています。急成長を続ける企業として、私たちはわくわくしてやりがいのある仕事の機会を提供しています。成長を続ける弊社内には、キャリア向上のさまざまなチャンスがあります。 </p>
]]>
</description>

Indeed 上での表示

仕事内容

  • 1~3年のセールスの経験をお持ちの方。
  • 取引成立に向けて全力で挑める方。
  • セールス業界で、急成長を続けるわくわくした環境でのキャリアをお探しの方。

福利厚生

ストックオプションや充実した福利厚生を含む、魅力的な給与体系が用意されています。急成長を続ける企業として、私たちはわくわくしてやりがいのある仕事の機会を提供しています。成長を続ける弊社内には、キャリア向上のさまざまなチャンスがあります。

よくある問題

以下のような問題がある場合、Indeed は貴社のXMLフィードを処理できません。また、求人が Indeed の検索結果に表示されない可能性があります。


よくある問題の表
問題 解決策
不正な特殊文字のエンコーディング ブラウザの「ソースを表示」機能を使用して、フィードのURLで括弧(< >)などの文字が正しく表示されているかどうかを確認してください。フィードがUTF-8文字エンコーディングなど、XML宣言を使用していることを確認します。ファイルには、エンコーディングを宣言するヘッダーが必要です。UTF-8が最もよく使用されていますが、UTF-8以外のエンコーディングを使用することもできます。
求人情報がフィードにない、または求人数がフィードとオリジナル採用ページで異なる フィードにすべての求人を含めてください。ウェブ上で公開されている募集中の求人はすべてフィードに含めてください。Indeed は検索エンジンであるため、より網羅性の高い情報のインデックス化を行います。
仕事内容の説明が無い、または不足している 求人に関連するすべての文字情報を含めてください。例えば、「必須要件」 が採用企業のデータベースでは別のカテゴリに分類されている場合も、Indeed のシステムでは、<description>フィールドに該当する情報をご記載いただく必要があります。
詐欺または詐欺の疑いがある求人 Indeed は、詐欺の疑いのあるものを除外するように設計されています。職務内容をわかりやすく明記してください。他企業の求人を送信する場合は、該当企業が合法的な企業であり、記載された求人が実際に募集中の案件であることを確認できるように、該当企業を入念に調査してください。
ファイルに古い求人がある 古い求人や休止中の求人をXMLに含めないでください。採用が決定したら、XMLファイルから求人を削除してください。Indeed が古い求人や休止中の求人を見つけた場合、XMLの利用を続けていただけるよう、挙動の修正の依頼を貴社にご連絡します。

XMLフィードに関するよくある質問(FAQ)

フィードを配信するための方法にはどんなものがありますか?

Indeed は以下の3つの手段のいずれかによって、ファイルの変更をモニターしています。

  • XML URLのクローリング
  • クライアントがホストするFTPサイトのクローリング(SFTPもサポート対象)
  • Indeed のFTPサーバーに直接ファイルを受信(zipファイルを推奨)

Indeed は、どれくらいの頻度でXMLフィードをインデックス化していますか?

URLまたはATSで指定されているFTPサイトでクローリングされるXMLについては、最後のリクエストから6時間ごとに求人データが1日に4回更新されます。Indeed がホストしているFTPについては、新しいファイルが最大6時間ごとに受信されると、XMLフィードが更新されます。ファイルをアップロードする頻度が高くなると、事前処理が停止し、求人情報の更新が行われなくなる場合があります。

どのようなメタデータを含めることができますか?

標準フィールドが記載されてさえいれば、あとは好きなフィールド(例:<job_type><branch_id>)を含めることができます。

フィードの求人は、すべて Indeed の検索結果に表示されますか?

検索結果への表示は、Indeed の表示ルールに基づきます。Indeed のサーチクオリティチームによって、合法かつ独自性があり、職務内容と勤務地が詳細に記載され、簡単に応募できる求人が優先的に表示されます。これらの条件を満たさない求人は、検索結果に表示されないことがあります。

Indeed エントリーを利用しており、求職者が Indeed から直接応募できるようにしているのに、なぜURLを提供しなければいけないのでしょうか?

3つの理由から(Indeed エントリーのページではなく)求人内容へ誘導するURLが必要となります。

  • Indeed エントリーに問題が発生した際には、求職者は求人URLへと誘導されます。
  • 求職者はいつでも、Indeed から元の求人をクリックして表示できます。
  • 求人内容と求人活動を確認するために、Indeed のアグリゲーションエンジンでは有効なURLが必要です。

複数の言語で同じ求人を掲載している場合はどうなりますか?

XMLでは、各言語の求人それぞれを、固有の求人として提供してください。XML内で同じ参照番号を使用した場合、最初に記載されている求人だけが Indeed に掲載されます。

複数の国で同じ求人を掲載している場合はどうなりますか?

募集中の各勤務地ごとに求人情報を提供してください。広い地域を対象とした求人でないものを広い地域に対して投稿した場合、Indeed 上でオーガニック検索では表示されません。

都道府県全体、または国全体を対象とした求人はどうなりますか?

Indeed では、市町村や都道府県、郵便番号などの要素が必須項目となっています。これらの要素に関する情報がない場合、求人はオーガニック検索では表示されません。

もし、合法的に幅広い地域を対象とした求人や、在宅勤務の求人を掲載する場合、ファイル内に含め、オーガニック検索でも表示されるように、クライアントの代わりにリクエストをお送りください。クライアントが Indeed のアカウントを持っている場合は、ログインしてサポートを受けることができます。アカウントを持っていないクライアントは、Indeed のWebサイトから Indeed に直接質問を送信できます。

(Go back to the top)


Indeed エントリー(IA)の追加

求人に 簡単応募のラベルを追加し、求職者が Indeed のサイト上のみで応募を完結できるように、Indeed エントリー API をご利用下さい。

Indeed エントリーAPIを実装しデプロイするまでに、およそ2~3週間かかります。

次のいずれかの方法で Indeed エントリーAPIを実装できます。

APIトークンの生成

Indeed エントリーAPIを実装する前に、貴社の Indeed 採用企業アカウントにログインするかアカウントを作成し、APIトークンを生成してください。

トークンを作成するときは、Indeed エントリーオプションを選択してください。

注意:Indeed の他の場所でもOAuthを使用している場合、Indeed エントリー連携用のトークンは別途保持してください。

XMLフィードを利用した Indeed エントリーの追加

Indeed XMLフィードをご利用中の場合、Indeed エントリーの設定属性をフィード内の<indeed-apply-data>要素の中に追加してください。

Indeed エントリーの設定属性は Indeed エントリー設定パラメータの表にまとめられています。

Indeed エントリーXML要素の例

以下の例は、1件の求人と Indeed エントリー要素を含む基本的なXMLフィードを表しています。

注意:基本的な求人情報は、ここでは分かりやすく記載するために省略されていますが、実際のフィードには記載する必要があります。

基本的なXMLフィードの例

<?xml version="1.0" encoding="utf-8"?>
<source>
    <publisher/>
    <publisherurl/>
    <lastBuildDate/>
    <job>
        <title/>
        <date/>
        <referencenumber/>
        <url/>
        <company/>
        <sourcename/>
        <city/>
        <state/>
        <country/>
        <email/>
        <postalcode/>
        <description/>
        <salary/>
        <education/>
        <jobtype/>
        <category/>
        <experience/>
        <indeed-apply-data>
            <![CDATA[indeed-apply-apiToken=1234ABCDE&indeed-apply-jobTitle=Professional+B
            asket+Weaver&indeed-apply-jobId=Sample+ID&indeed-apply-jobCompanyName=My+Favo
            rite+Company&indeed-apply-jobLocation=Austin+TX&indeed-apply-jobUrl=http%3A%2
            F%2Fwww.indeed.com&indeed-apply-postUrl=https%3A%2F%2Fhookb.in%2FPxOjJqJELNH8
            lZLZDkpz&indeed-apply-questions=https%3A%2F%2Fpastebin.com%2Fraw%2F0vXq9q9b%2
            3]]>
        </indeed-apply-data>
    </job>
</source>

Indeed エントリーXML要素の制限

XMLフィードを利用して Indeed エントリーを追加する場合、以下の制限があります。

  1. 属性はURLエンコードされている必要があります。
  2. Indeed エントリーフィールドがXMLフィードに含まれている場合、そのフィールドを空白にすることはできません。
  3. データ属性はindeed-apply-のprefixを含む必要があります。data-indeed-apply-はprefix として使用しないでください。
  4. 基本的な設定属性は、以下の例外を除き、XMLフィードを利用して渡すことができます。以下の属性はHTMLボタンを利用した場合にのみ機能します。
  5. onapplied
  6. onclick
  7. continueUrl

HTMLボタンを利用した Indeed エントリーの追加

Indeed XMLフィードを利用していない場合は、Indeed エントリーのHTMLボタンを採用企業の仕事内容のページに追加していただくと、Indeed エントリーを実装できます。有効にするには、span要素に、Indeed エントリーの設定属性とindeed-apply-widgetクラスを併記し、JavaScriptを含めてください。

Indeed エントリーボタンは、単一ページの応募(SPA)や、ページ全体を再読み込みせずにbootstrap.jsスクリプトを複数回読み込むボタンがあるWebページには最適化されていません。

注意: すでにXMLフィードを使用している場合は XML要素についての指示に従って、Indeed の求人に対して Indeed エントリーを有効化してください。このHTMLの方法は、自社サイトの求人にのみ使用してください。

Indeed エントリーの設定属性は Indeed エントリー設定パラメータの表にまとめられています。

Indeed エントリーHTMLボタンの例

以下の例は、Indeed エントリーHTMLボタンに必須となるマークアップ言語を表しています。これには、機能を有効にするためのJavaScriptも含まれています。

HTMLボタンの例

<?xml version="1.0" encoding="utf-8"?>

<span class="indeed-apply-widget"
    data-indeed-apply-apitoken="INSERT YOUR APITOKEN HERE"
    data-indeed-apply-jobid="7775e2bc62b7f77e"
    data-indeed-apply-joblocation="New York, NY 10110"
    data-indeed-apply-jobcompanyName="Your Company"
    data-indeed-apply-jobtitle="Test Engineer"
    data-indeed-apply-joburl="http://www.yourcompany.com/careers/yourjob123.html"
    data-indeed-apply-posturl="http://www.yourcompany.com/process-applications"
    data-indeed-apply-jobmeta="right-rail-apply-button"></span>
 
<script>(function(d, s, id) {
var js, iajs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)){return;}
js = d.createElement(s); js.id = id;js.async = true;
js.src = "https://apply.indeed.com/indeedapply/static/scripts/app/bootstrap.js";
iajs.parentNode.insertBefore(js, iajs);
}(document, 'script', 'indeed-apply-js'));
</script>

Indeed エントリー設定パラメータ

XMLフィード、HTMLボタンのどちらを利用する場合にも、以下の設定パラメータを使用して、Indeed エントリーAPIを設定してください。

注意:これらのパラメータは、HTML5 のデータ属性として、Indeed エントリーのボタンに追加することができます。データ属性には、data-indeed-apply-の prefix を追加する必要があります。


パラメータの一覧表
パラメータ名 必須/任意 内容
joburl 任意 仕事内容がすべて記載されたページの正規URL。XMLファイル内に、このURLをエンコードしてください。
注意:Indeed での応募では、応募が行われている Indeed のURLの応募ボタンにjoburlが設定されます。
http%3A%2F%2Fwww.yourcompany.com %2F%0Acareers%2Fyourjob123.html
jobid 任意 求人のID。求人を内部で追跡するために使用されます。
注意:このフィールドには最大256字のASCII文字を含めることができます。
7775e2bc62b7f77e
jobtitle 必須 サイトの外部で表示される求人の職種名。(50文字まで)
注意:XMLの<title>フィールドと一致している必要があります。
テストエンジニア
jobcompanyname 任意 採用企業名。(50文字まで) 貴社のお名前
joblocation 任意 勤務地。(50文字まで) 東京都港区
jobmeta 任意 記載したい任意の情報。外部には表示されませんが、post URLからの応募の際に送信されます。 right-rail-apply-button
apitoken 必須 Indeed から提供されたパブリックAPIトークン。 your-api-token
email 任意 応募の送信に使用される採用企業のメール。 これは暗号化された値です。詳細は、暗号化と復号処理の項目をご覧ください。 postUrl が入力されていない場合、このフィールドは必須です。
注意:ATSとの連携にこのフィールドを使用することはできません。このフィールドは採用企業のみご利用いただけます。
b18d0be4c173dfa2b7cb7856e7c7b6f 02a563867a9df67ca208c8b9654966299
locale 任意 メールが入力されている場合、採用企業にメールを送信する際の使用言語を判別します。デフォルト言語は英語(en)、日本語版は(ja)です。
注意:このフィールドは応募者に送信される確認メールには影響しません。
ja
posturl 必須 Indeed が応募データを投稿するURL。XMLファイル内に、このURLを記載してください。
注意:メールアドレスの指定がない場合、postUrlは必須となります。
http%3A%2F%2Fwww.yourcompany.com %2Fprocess-applications
phone 任意 求人に電話番号のフィールドを表示するかどうかを示す文字列の値。 設定可能な値は、optionalhiddenrequiredのいずれかです。デフォルト値はoptionalに設定されています。 optional
coverletter 任意 採用企業への質問、自己PR、備考のフィールドが必須かどうかを示す文字列値。 設定可能な値は、optionalhiddenrequiredのいずれかです。デフォルト値はoptionalに設定されています。 required
resume 任意 履歴書の提出を必須とするかを設定したり、履歴書のアップロードのオプションがユーザーに表示されないように設定したりします。 設定可能な値は、optionalhiddenrequiredのいずれかです。デフォルト値はrequiredに設定されています。 optionalまたはhiddenを選択した場合は、スクリーニング用の質問を含める必要があります。 履歴書のファイル形式として、.pdf、.doc、.docx、.rtf、.txtに対応している必要があります。 required
name 任意 エントリーフォームの名前フィールドを姓と名に分割するか(name="firstlastname")、氏名を1つのフィールドにまとめるか(name="fullname")を示す文字列値。デフォルトの値は、氏名を1つのフィールドにまとめます。 firstlastname
onapplied 任意 ユーザーが求人に応募したときに呼び出す、グローバルJavaScript関数のカンマ区切りリスト。 この関数の唯一の引数は、このボタンのHTML要素です。
注意:この属性は、HTMLボタンを利用して Indeed エントリーを実装した場合のみ機能します。
on_applied_callback
onclick 任意 ユーザーがボタンをクリックしたときに呼び出す、グローバルJavaScript関数のカンマ区切りリスト。 この関数の唯一の引数は、このボタンのHTML要素です。 注意:この属性は、HTMLボタンを利用して Indeed エントリーを実装した場合のみ機能します。 on_click_callback
advnum 任意 エントリーのコンバージョンの属性設定時に使用する広告主番号。 1432700306306892
questions 任意 Indeed エントリーでの応募の際に尋ねる質問をJSON形式の文字列で返すURL。質問の作成については、スクリーニング用の質問項目の追加を参照してください。
continueurl 任意 応募後、求職者が応募確認ページの[続ける]をクリックすると表示されるURL。
注意:この属性は、HTMLボタンを利用して Indeed エントリーを実装した場合のみ機能します。
http%3A%2F%2Fwww.apply.com %2Fafter-the-apply
noButtonUI 任意 ブール型のフラグ。trueに設定すると、Indeed エントリーボタンの標準スタイル(通常はオレンジ色の長方形)が無効化され、代わりに、スタイル設定されていないボタン要素がページに追加されます。このフラグにより、Indeed エントリーボタンの外観を、表示されるコンテキストの外観や使用感に合わせてカスタマイズできます。
注意:この属性は、HTMLボタンを利用して Indeed エントリーを実装した場合のみ機能します。
true|false
onappliedstatus 任意 求人に対して Indeed エントリーボタンが設置されている場合に呼び出す、グローバルJavaScript関数のカンマ区切りリスト。 この関数の最初の引数は、このボタンのHTML要素です。2番目の引数はステータスフラグであり、Indeed エントリーボタンがすでに設定されている求人を閲覧している求職者が応募した場合、1に設定されます。
注意:この属性は、HTMLボタンを利用して Indeed エントリーを実装した場合のみ機能します。
<span class="indeed-apply- widget"...data-indeed-apply- onAppliedStatus="cb"...</span> var cb = function(buttonElement, payload) { var applied = payload && payload.applied === 1; if (applied) { ... }};
closeHandler 任意 求職者が Indeed エントリーの手順に従い、HTMLボタンが設定されている求人に応募した後に表示される[閉じる]リンクをクリックしたときに呼び出す、グローバルJavaScript関数のカンマ区切りリスト。 この関数の唯一の引数は、このボタンのHTML要素です。
注意:この属性は、HTMLボタンを利用して Indeed エントリーを実装した場合のみ機能します。
skipContinue 任意 ブール型のフラグ。「true」に設定すると、デフォルト画面が無効になります。この画面は、ボタンが設定されている求人に対して求職者が応募した後に表示されます。 continueUrlパラメータと併用すると、応募が送信された後、求職者のブラウザウィンドウ全体が、このボタンが表示されているページから指定されたcontinueUrlにリダイレクトされます。
注意:この属性は、HTMLボタンを利用して Indeed エントリーを実装した場合のみ機能します。
data-indeed-apply- skipcontinue="true" data-indeed-apply- continueurl="https://www.google.com"

(Go back to the top)


スクリーニング用の質問

スクリーニング用の質問を使うことで、応募プロセスの中で求職者についてさらに詳しく知ることができます。Indeed エントリーで質問が取得されるように、JSONの形式でURLに投稿してください。

質問項目の追加にあたって

注意事項

  • 最大500個の質問を入力できます。ただし、Indeed のデータによると、質問項目が20件以上ある場合はコンバージョン率が急激に下がります。
  • 質問のファイルのサイズは1MB以下にしてください。
  • 質問のファイルは、固有の質問URLによってサーバーサイドでキャッシュされ、1時間ごとに更新されます。
  • ja_JPロケールを使用して、限界値、最小値、または最大値の形式を規定します。小数点にはピリオドを使用してください。桁区切り文字は使用しないでください。
  • type=dateの形式は、応募がサードパーティに渡される方法や、最小値と最大値の解析方法に影響します。求職者は、指定の形式ではなくロケールに応じて日付を入力しますが、検証エラーメッセージはロケールの形式になります。
  • type=dateでは、混乱を防ぐため、yyではなくyyyyを使用してください。

注意:Indeed エントリー質問用ツールを使用してJSONファイルのシンタックスを確認し、スクリーニング用の質問項目の体裁を確認してください。

ベストプラクティス

  • 求人に関連する質問のみを含めてください。
  • スクリーニング用の質問の数はなるべく少なくしてください。求職者はモバイル端末から質問に回答するということを念頭に置く必要があります。
  • 応募書類を妥当な項目で区切るには、pagebreakという質問(type)を使用します。JSONにpagebreakが何も含まれていない場合は、デフォルトのページ区切りが挿入されますが、これにより応募が意図しない方法で分割されてしまう場合があります。
  • ユーザーが履歴書から回答できる質問や、Indeed エントリーの応募プロセスですでに収集した情報(例:連絡先など)についての質問は、スクリーニング用の質問には含めないでください。
  • どういった質問を含めるかについては、現地の法律を遵守してください。どのような質問が現地の法律に抵触するおそれがあるかについては、貴社の法務部にご確認ください。
  • 特定の形式での回答が必要な場合、求職者がわかるように説明を記載してください。

スクリーニング用の質問項目のためのJSON

この項目は、すべての質問で使用されるパラメータを記載しています。具体的な質問の種類に関しては、スクリーニング用の質問項目の種類をご覧ください。

JSONスクリーニング用の質問項目パラメータ


JSONスクリーニング用の質問項目パラメータの表
名前 必須/任意 内容 設定可能な値
id 必須 この質問の固有ID。 任意の文字列 強み
type 必須 質問の種類を示します。各種類についての詳しい説明は、以下の項目をご覧ください。 textarea
text
select
hierarchical
multiselect
date
file
information
pagebreak
textarea
question type=informationおよびtype=pagebreakの場合は無効 その他のすべての種類では 必須 応募者に表示される質問のテキスト。 任意の文字列 販売の経験はありますか ?
text type=informationの場合は必須。 その他のすべての種類では任意。 応募者に表示されるテキスト。 任意の文字列 以下の質問は任意項目です。
options type=selecttype=multiselectの場合は必須 ドロップダウンメニューで選択できるオプションのリスト。 JSON [{ "value":"1", "label":"女性" }]
value type=selecttype=multiselectの場合は必須 ドロップダウンメニュー形式の質問に返される、各選択肢に対応する値。 任意の文字列 1
label type=selecttype=multiselectの場合は必須 ドロップダウンメニューの中の選択肢のテキスト。 任意の文字列 女性
required 任意 質問を回答必須に設定できます。required:trueが指定されていると、Indeed エントリーでは、回答フィールドに何も入力しないまま、あるいは何も選択しないままでは、回答者は先に進むことができません。requiredが指定されていない場合、回答は任意となり、空の回答も可能になります。 true "required":true
format type=dateの場合は必須 type=textの場合は任意 使用できる入力形式。 type:textの場合、回答を整数(integer)、小数(decimal)、または番号(numeric_text)に限定できます。type:dateの場合、MMを使用するSimpleDateFormatのみが回答として有効です。 テキストの形式
  • integer(整数)
  • decimal(小数)
  • numeric_text(0を整数として表示したい時に使用)
  • その他のロケール特有の形式(Unicode CLDRを参照してください)
日付の形式
  • integer(整数)
  • dd/MM/yyyy
整数、 年月日(dd/MM/yyyy)
limit 任意 type=textおよびtype=textareaの場合に、回答の文字数の上限を設定します。 任意の整数 100
min 任意 format=integerまたはformat=decimalでは回答の最小値が設定できます。type=dateでは、回答は入力した日付または以降の日付になる必要があります。 format=integer
の場合は任意の整数、format=decimal
の場合は任意の小数、type=dateの場合は任意の日付(指定の形式であること)
0
max 任意 format=integerまたはformat=decimalでは、回答の最大値を設定できます。type=dateでは、回答は入力した日付または以前の日付である必要があります。 format=integer
の場合は任意の整数、format=decimal
の場合は任意の小数、type=dateの場合は任意の日付(指定の形式であること)
100
condition 任意 前項のselect質問がどう回答されたかという条件が、質問に付随する場合に使用。この質問を有効にする、前項の質問のidと選択肢のvalueを指定してください。
例えば、応募者に販売の経験について質問したとします。経験があると答えた場合、どの業種での販売経験があるのかを尋ねる、条件付の質問を表示出来ます。
JSON "condition": { "id": "parent1", "value": 0}

スクリーニング用の質問項目の種類

textarea

複数行のテキスト入力のフィールドが表示される質問。長い回答が予想される質問に使用します。

textareaの例
{
  "id":"felonytext",
  "type":"textarea",
  "question":"If you have been convicted of a felony, please explain the circumstances around the conviction:"
}

text

1行のテキスト入力のフィールドが表示される質問。回答が短いと予想される質問に使用します。

注意:textの質問に利用できる各種のフォーマット(integer、decimal、numeric_text)については下記の例と上記の表をご覧ください。

textの例

形式の指定がない場合:

{
   "id": "city",
   "type": "text",
   "question": "What city are you located in?",
   "required": true
    }
    ```

Integer(整数):整数を表示。少数や先行ゼロは表示できません。

{
  "id":"age",
  "type":"text",
  "question":"Age?",
  "format":"integer",
  "min":"16",
  "max":"75"
}

Numeric text:先行ゼロを含む数字も表示されますが、小数は表示されません。

{
  "id": "ssn",
  "type": "text",
  "format": "numeric_text",
  "question": "Enter last 4 digits of your SSN.",
  "required" : false
}

Decimal (小数): 小数や先行ゼロも含む数字が表示できます。

{
  "id": "gpa",
  "type": "text",
  "format":"decimal",
  "question": "What was your GPA?",
  "required": true
}

select

応募者が1つの回答を選択できるドロップダウンメニューが表示される質問。複数の選択肢から回答を選ぶ質問に使用します。

注意:回答の選択肢が6つ以下である場合、選択肢はラジオボタンとして表示されます。選択肢が7つ以上である場合、選択肢はドロップダウンメニューとして表示されます。

selectの例
{
  "id": "gender",
  "type": "select",
  "question": "Gender?",
  "options": [{
      "value": "0",
      "label": "Decline to answer"
    },
    {
      "value": "1",
      "label": "Male"
    },
    {
      "value": "2",
      "label": "Female"
    }
  ]
}

conditional

前の質問の回答に基づいて、追加の質問と応答を表示します。例えば、応募者に「18歳以上かどうか」と尋ねた場合、もし、 「 はい 」 と回答したら、「就労に関する必要書類の提示が可能か」などと質問することができます。

conditionalの例
[{
    "id": "profile-atLeast18",
    "question": "Are you at least 18 years of age?",
    "required": true,
    "options": [{
        "value": "1",
        "label": "Yes"
      },
      {
        "value": "0",
        "label": "No"
      }
    ],
    "type": "select"
  },
  {
    "id": "profile-permit",
    "question": "Can you provide a work permit?",
    "required": true,
    "condition": {
      "id": "profile-atLeast18",
      "value": "0"
    },
    "options": [{
        "value": "1",
        "label": "Yes"
      },
      {
        "value": "0",
        "label": "No"
      }
    ],
    "type": "select"
  }
]

hierarchical

前の回答に基づいて質問と応答をさらに表示します。例えば、応募者に県を選択してもらうとします。すると、選択肢に応じて、その県内の市のドロップダウンリストを表示できます。hierarchicalの質問は、それぞれ、都道府県、市区町村、郡のように、3つの階層まで利用可能です。

注意:hierarchicalの質問は、conditionalと類似していますが、最初の選択肢がその後に続く質問の回答を決定する階層の多い質問に対しては、 hierarchical の方がより適切です。hierarchical機能を使用することで、関連情報を収集するまでに必要になる質問の合計数を削減することができます。

hierarchicalの例
[{
  "id": "hierarchical",
  "type": "hierarchical",
  "question": "State",
  "required": true,
  "options": [{
    "value": "0",
    "label": "California"
  }, {
    "value": "1",
    "label": "Texas"
  }, {
    "value": "2",
    "label": "New York"
  }],
  "hierarchicalOptions": [{
      "id": "cali_cities",
      "options": [{
        "value": "0",
        "label": "San Francisco"
      }, {
        "value": "1",
        "label": "Los Angeles"
      }],
      "condition": {
        "id": "hierarchical",
        "value": "0"
      }
    }, {
      "id": "texas_cities",
      "options": [{
        "value": "0",
        "label": "San Antonio"
      }, {
        "value": "1",
        "label": "Austin"
      }],
      "condition": {
        "id": "hierarchical",
        "value": "1"
      }
    },
    {
      "id": "sa_zipcodes",
      "options": [{
        "value": "0",
        "label": "78212"
      }, {
        "value": "1",
        "label": "78209"
      }],
      "condition": {
        "id": "texas_cities",
        "value": "0"
      }
    }
  ]
}]

multiselect

応募者が複数の回答を選択できるチェックボックスが表示される質問。複数の選択肢から回答を選ぶ質問を設定する際に使用します。

multiselectの例
{
  "id": "favoritecolors",
  "type": "multiselect",
  "question": "Select your two favorite colors:",
  "options": [{
      "value": "0",
      "label": "Maize"
    },
    {
      "value": "1",
      "label": "Blue"
    },
    {
      "value": "2",
      "label": "Green"
    }
  ]
}

date

日付だけを入力できるテキストフィールドを含む質問。日付を含む回答が必要な際に使用します。

注意:このスクリーニング用の質問項目を使用する場合はformatが必要です。このformatは、dd/MM/yyyyか、Unicode CLDRに準拠したその他のロケール固有のフォーマットにする必要があります。Indeed ではSimpleDateFormatを使用しており、mmを使用すると混乱する可能性があるため、月のフォーマットはMMにする必要があります。

dateの例
{
  "id":"startdate",
  "required":true,
  "type":"date",
  "question":"Start date?",
  "format":"dd/MM/yyyy",
  "min":"01/02/2014",
  "max":"03/04/2014"
}

file

ファイルをアップロードするインターフェースが表示される質問。回答で証明書、ポートフォリオ、仕事のサンプルなど、ファイルのアップロードが必要な質問に使用します。応募データの受信方法のオプションに関する項で説明したとおり、回答データはcontentTypedatafileNameの3つのフィールドが含まれたJSON POSTリクエストとして返されます。

対応しているファイル形式:doc、docx、gif、jfif、jif、jpe、jpeg、jpg、pdf、png、rtf、tif、tiff、txt

ファイルの最大サイズ:5MB。応募ごとの最大合計サイズは15MBです(履歴書ファイルを含む)。

注意:この質問を履歴書の取得に使用しないでください。履歴書を取得するには、Indeed エントリー設定パラメータである「Resume」を使用してください。

fileの例
{
  "id": "file2",
  "type": "file",
  "question": "Please attach a resume file.",
  "required": true,
  "min":"1",
  "max": "3"
}

information

回答を必要としないテキストを表示します。説明用のテキストや、各項目の見出しを記載するために使用します。テキスト内には、<b><p><br><li><ul><ol><a href=" ">のHTML要素を使用できます。URLにはHTTPおよびHTTPSプロトコルのみが許可されています。リンクは新しいタブで開きます。

注意:<br>を使用して、段落後の改行を強制しないでください。Indeed では、自動的に段落間に改行が挿入されます。

informationの例
[{
  "id": "first_header",
  "type": "information",
  "text": "The next set of questions are &lt;b&gt; optional &lt;/b&gt; and are for recording purposes only. 
 Make sure to view the &lt;a href='http://www.eeoc.gov/employers/upload/poster_screen_reader_optimized.pdf'&gt; EEO is the Law&lt;/a&gt; poster.",
  "fontsize": 8
}]

pagebreak

ページ上で、質問をグループごとにまとめる際に使用されます。2つのpagebreak間に含まれるすべての質問 (type)は、同じページに表示されます。最大20問の質問を同じページにまとめることができます。

pagebreakの例
[{
    "id": "page1_open",
    "type": "pagebreak"
  },
  {
    "id": "question_sample",
    "type": "text",
    "question": "Age?"
  },
  {
    "id": "page1_close",
    "type": "pagebreak"
  }
]

その他共有事項

ふりがな、生年月日、性別については、idを "ja_pronunciation","id":"ja_birth", "id":"ja_gender"と加えることで、応募フォームの1P目に項目を設定することができます。

注意: Indeed エントリー質問用ツールでは日本独自の仕様のため反映されません。ご了承ください。

ふりがな、生年月日、性別 の例

[
 {
 "id":"ja_pronunciation",
 "type":"text"
 "question":"ふりがな",
 "required": true
 },
 {
 "id":"ja_birth",
 "required":true,
 "type":"date",
 "question":"生年月日",
 "format":"dd/MM/yyyy",
  "min":"01/01/1980",
 "max":"31/12/2000"
 },
 {
 "id":"ja_gender",
 "type":"select",
 "question":"性別",
 "options":[
 {
  "value":"0",
  "label":"無回答"
  },
  {
  "value":"1",
  "label":"男"
  },
  {
  "value":"2",
  "label":"女"
  }
 }
]

JSON postの例

注意 この項目は、採用企業に送信された応募データの内容について説明するものです。Indeed にすでにご提供いただいたJSONファイルの「questions」セクションのフォーマットには、変更を加えていただく必要はありません。

現在、JSON postには「スクリーニング用の質問」とその「回答」が、次の2つのフォーマットで含まれています。

  • 現在*のフォーマット
  • 変更後のフォーマット

この2つのフォーマットについて以下で説明します。今後、「現在のフォーマット」は2021/12/31時点で廃止する予定です。

現在*のフォーマット

現在のフォーマットでは、スクリーニング用の質問とその回答は、JSONファイルの「questions」セクションに含まれています。

  • question:
  • questions:前の項目で説明された全質問のリスト
  • answers:全回答のリスト
  • url:質問が取得されたURL
  • retrievedOnMillis:質問が取得された日付と時刻(単位:ms)

変更後のフォーマット

変更後のフォーマットでは、スクリーニング用の質問とその回答は、JSONファイルの「questionsAndAnswers」セクションに含まれています。

  • questionsAndAnswers:(改善されたフォーマット)
  • questionsAndAnswers:以下のリスト
  • questions:前の項目で説明された全質問のリスト
  • answer:上記の質問への回答
  • url:質問が取得された URL
  • retrievedOnMillis:質問が取得された日付と時刻(単位:ms)

JSON postファイルの完全な例を表示またはダウンロードするには、こちらをクリックしてください(現在のフォーマットと変更後のフォーマットが含まれています)。

*現在のフォーマット:現在のフォーマットは今後廃止される予定です。現在のフォーマットを使用して「スクリーニング用の質問とその回答」を読み込んでいる場合は、Indeed エントリーで引き続き正確な情報をすべて受信できるように速やかにご変更ください。現在のフォーマットを使用しており、変更後のフォーマットへの移行を希望している既存の採用企業またはATSは、この移行ガイドをご参照ください。

スクリーニング用の質問のテスト

Indeed エントリー質問用ツールを使用してJSONファイルのシンタックスを確認し、スクリーニング用の質問項目の体裁を確認してください。

Indeed エントリー経由の応募プロセスのフロー全体をテストする場合は、外部のテストツールを使用します。このフローには、スクリーニング用の質問プロセス全体を含めることができます。

(Go back to the top)


応募データの受信について

Indeed エントリー経由の応募は、メールpostUrlのいずれかで受け取ることができます。

PostUrl

応募をプログラムで処理する場合は、Indeed エントリーがPOSTリクエストを送信する宛先URLを指定してください。indeed-apply-postUrlのデータ属性は、Indeed が応募データをPOSTする宛先のURLを含む文字列にする必要があります。

PostUrlの例

<indeed-apply-data><![CDATA[indeed-apply-apiToken=1234ABCDE&indeed-apply
-jobTitle=Professional+Basket+Weaver&indeed-apply-jobId=Sample+ID&indeed
-apply-jobCompanyName=My+Favorite+Company&indeed-apply-jobLocation=Austi
n+TX&indeed-apply-jobUrl=http%3A%2F%2Fwww.indeed.com&indeed-apply-postUr
l=https%3A%2F%2Fhookb.in%2FPxOjJqJELNH8lZLZDkpz&indeed-apply-questions=h
ttps%3A%2F%2Fpastebin.com%2Fraw%2F0vXq9q9b%23]]></indeed-apply-data>

応募データはHTTP POSTリクエストの生の本文として送信されるので、リクエストが一般的なフォームと同じように処理されることはありません。リクエストボディには、読み込んでパースする必要があるJSONドキュメントが含まれます。JSONフィールドが未入力の場合、未入力フィールドを空白として扱い、認識されないフィールドを無視する堅牢なJSONパーサを使用する必要があります。

注意:JSONデータのペイロードの最大サイズはありません。

POSTの本文はUTF-8でエンコードされ、Indeed が応募を送信していることを証明する、信頼性のあるヘッダを含みます。

Applicantフィールドのファイル部分にはcontentType、data、fileNameという3つのフィールドが含まれます。

  • ContentTypeは、fileNameに基づいて判定されます。
  • dataフィールドには、Base64でエンコードされた生の履歴書ファイルが含まれます。
  • サードパーティは、txt、pdf、doc、docx、rtfの各ファイル形式に対応している必要があります。

注意:POSTを別のURLにリダイレクトしないでください(301および302リダイレクト等)。Indeed エントリーでは、リダイレクトが処理されません。

想定される応答

Indeed では、POSTへの応答としてHTTP 2xxレスポンスコードが返ってくることを想定しています。接続タイムアウト、POSTタイムアウト、または無効なHTTPレスポンスが原因でHTTP2xxレスポンスが返ってこない場合、Indeed から応募が再送信されます。Indeed から応募を自動再送する際には、リトライする間隔を増やすメソッドを採用します。最後の自動再送後に適切なレスポンスが返ってこない場合、Indeed は応募の送信を停止します。重複した応募の処理と期限切れの募集についての詳細なガイダンスについては、連携の状態の監視を参照してください。

Indeed は、POST期間中に求人応募の内容を検証することをパートナーに求めていません。求人内容の検証と応募資格の無効化は、POSTのダウンストリームで行う必要があります。パートナーが求職者のデータを検証する際にエラーが発生すると、連携が無効になる可能性があります。

JSON応募データ

JSON履歴書のアップロードの例

{ 
   "applicant":{ 
      "email":"john.doe@indeed.com",
      "fullName":"John Doe",
      "phoneNumber":"555-555-4321",
      "verified":true,
      "sponsored":true,
      "indeedTargetedad":false,
"resume":{ 
         "file":{ 
            "contentType":"text/plain",
            "data":"SGVsbG8h",
            "fileName":"resume.txt"
         }
      }
   },
   "appliedOnMillis":1325276227653,
   "job":{ 
      "jobCompany":"Your Company",
      "jobId":"7775e2bc62b7f77e",
      "jobLocation":"New York, NY 10110",
      "jobMeta":"",
      "jobTitle":"Test Engineer",
      "jobUrl":"http://www.yourcompany.com/careers/yourjob123.html"
   },
   "locale":"en_US"
}

JSON Indeed 履歴書の例

{ 
   "locale":"en_US",
   "appliedOnMillis":1324051581711,
   "job":{ 
      "jobId":"7775e2bc62b7f77e",
      "jobTitle":"Test Engineer",
      "jobCompany":"Your Company",
      "jobLocation":"New York, NY 10110",
      "jobUrl":"http://www.yourcompany.com/careers/yourjob123.html",
      "jobMeta":""
   },
   "applicant":{ 
      "fullName":"John Doe",
      "email":"john.doe@indeed.com",
      "phoneNumber":"555-555-4321",
      "coverletter":"coverletter - text",
      "verified":true,
       "sponsored":true,
      "indeedTargetedad":false,
      "resume":{ 
         "text":"resume - text",
         "html":"resume - html",
         "json":{ 
            "firstName":"John",
            "lastName":"Doe",
            "headline":"headline",
            "summary":"summary",
            "publicProfileUrl":"http://www.indeed.com/r/123456",
            "additionalInfo":"me-additionalinfo",
            "phoneNumber":"555-555-4321",
            "location":{ 
               "city":"Austin, TX"
            },
            "skills":"HTML, JavaScript",
            "positions":{ 
               "_total":1,
               "values":[ 
                  { 
                     "title":"Product Manager",
                     "company":"Indeed",
                     "location":"Austin, TX",
                     "startDateMonth":"09",
                     "startDateYear":"2007",
                     "endDateMonth":"-1",
                     "endDateYear":"-1",
                     "endCurrent":true,
                     "description":"I am the current product manager for Indeed Apply."
                  }
               ]
            },
            "educations":{ 
               "_total":1,
               "values":[ 
                  { 
                     "degree":"B.A.",
                     "field":"Computer Science",
                     "school":"University of Texas, Austin",
                     "location":"Austin, TX",
                     "startDate":"2002",
                     "endDate":"2006",
                     "endCurrent":false
                  }
               ]
            },
            "links":{ 
               "_total":1,
               "values":[ 
                  { 
                     "url":"http://www.indeed.com"
                  }
               ]
            },
            "awards":{ 
               "_total":1,
               "values":[ 
                  { 
                     "title":"Best PM at Indeed",
                     "dateMonth":"04",
                     "dateYear":"2008",
                     "description":"Best PM is voted on by Indeed employees and 
given to the PM with the most votes."
                  }
               ]
            },
            "certifications":{ 
               "_total":1,
               "values":[ 
                  { 
                     "title":"cert-title",
                     "startDateMonth":"02",
                     "startDateYear":"2007",
                     "endDateMonth":"02",
                     "endDateYear":"2008",
                     "endCurrent":false,
                     "description":"cert-description"
                  }
               ]
            },
            "associations":{ 
               "_total":1,
               "values":[ 
                  { 
                     "title":"group-title",
                     "startDateMonth":"01",
                     "startDateYear":"2009",
                     "endDateMonth":"-1",
                     "endDateYear":"-1",
                     "endCurrent":true,
                     "description":"group-description"
                  }
               ]
            },
            "patents":{ 
               "_total":1,
               "values":[ 
                  { 
                     "patentNumber":"patent-number",
                     "title":"patent-title",
                     "url":"patent-url",
                     "dateMonth":"02",
                     "dateYear":"2009",
                     "description":"patent-description"
                  }
               ]
            },
            "publications":{ 
               "_total":1,
               "values":[ 
                  { 
                     "title":"pub-title",
                     "url":"pub-url",
                     "dateDay":"14",
                     "dateMonth":"10",
                     "dateYear":"2004",
                     "description":"pub-description"
                  }
               ]
            },
            "militaryServices":{ 
               "_total":1,
               "values":[ 
                  { 
                     "serviceCountry":"mil-country",
                     "branch":"mil-branch",
                     "rank":"mil-rank",
                     "startDateMonth":"02",
                     "startDateYear":"2003",
                     "endDateMonth":"12",
                     "endDateYear":"2008",
                     "endCurrent":false,
                     "commendations":"mil-commendations",
                     "description":"mil-description"
                  }
               ]
            }
         },
         "file":{ 
            "contentType":"application/octet-stream",
            "data":"SGVsbG8h=",
            "fileName":"John_Doe.pdf"
         }
      }
   }
}

Indeed エントリーのJSONフィールド

最上部階層のフィールド


最上部階層のフィールドの表
フィールド名 内容
id Indeed が指定した応募の固有ID。
Indeed と評価データを共有する際に、このIDと応募状況を含めてください。
5156eb63c9a0a8ac
9358c3a444a2818c
8a5ffdbcba5960ec
0cace3277f6b99df
appliedOnMillis standard Unix time形式で表示された、ユーザーが応募した日付と時間。 1324051581711
job ボタンのHTMLデータ属性によって提供されるデータを表す求人のオブジェクト。 Jobオブジェクトをご覧ください。
applicant 応募者を表すApplicantオブジェクト。 Applicantオブジェクトのフィールドをご覧ください。
analytics

以下の情報を含むオブジェクトです。

  • ip:ユーザーのIPアドレス
  • referrer:「簡単応募」ボタンを利用している場合、ボタンの表示されているページ
  • useragent:ユーザーのデバイスおよびユーザーエージェント
  • targetedApplyAd:Indeed エントリーの求人が Indeed に掲載されている場合、trueを返します
  • sponsored:Indeed 検索結果ページで求人が有料掲載されている場合はtrue、求人がオーガニックであり、無料掲載の場合はfalseを返します

注意:sponsoredは、ユーザーがサードパーティのWebサイトから応募する場合や、求職者が Indeed のターゲット広告(ITA)製品から応募するよう指示されている場合など、Indeed サイト上でクリックが発生しない場合にempty/absentを返します。サードパーティのサイトでは、求人が有料掲載されているかどうかを判定できません。

サードパーティのサイトで発生した有料掲載求人のクリックをトラッキングするには、URLのトラッキングを有効にしてください。JSONの応答には「sponsored」のパラメータが含まれていないので、XML-onlyの応答を有効にする必要があります。サードパーティのサイト上で有料掲載求人をトラッキングするには、クライアントの採用企業アカウント内の求人ごとに設定し、joburlに埋め込む必要があります。これにより、ATSでの追跡が可能になります。

locale 求人への応募の際に使用されたロケールです。 ja_JP

Jobオブジェクトのフィールド

注意:これらのフィールドはボタンの設定に基づきます。


Jobオブジェクトのフィールドの表
フィールド名 説明
jobUrl 仕事内容がすべて記載されたページの正規URL。 注意:Indeed での応募では、応募が行われた Indeed の特定のURLに、応募JSONで受信したjobUrlが設定されます。 http://www.yourcompany.com/
careers/yourjob123.html
jobId 求人のID。求人を内部で追跡するために使用されます 7775e2bc62b7f77e
jobTitle 表示する求人の職種名。 テストエンジニア
jobCompany 採用企業名。

注意:データ属性(data-attributes)ではjobCompanyNameです。
貴社のお名前
jobLocation 勤務地。 東京都港区
jobMeta オリジナルボタン設定で入力される任意の情報。 right-rail-apply-button

Applicantフィールド


Applicantフィールドの表
名前 入力の有無 説明
fullName 必須 応募者の名前。ユーザーが Indeed 履歴書を使用している場合はfirstName+lastNameとなります。 田中一郎
email 必須 応募者のメールアドレス。 ichiro.tanaka@indeed.com
phoneNumber 任意 応募者が入力している場合、電話番号を表示。 555-555-4321
coverletter 任意 応募者の送付状。ユーザーが送付状を提供していない場合、このフィールドはJSONオブジェクトに表示されません。 送付状
resume 任意 ユーザーの履歴書を表すオブジェクト。 Resumeフィールドの項目をご覧ください。
verified 必須

求職者のメールアドレスが認証済みかどうかを示すフラグ。以下の場合はtrueが表示されます。

  • ユーザーが認証済みのアカウントにログインしており、応募のメールアドレスがそのアカウントに関連付けられたメールアドレスと一致している
  • ユーザーはログアウトしているが、メールアドレスがワンタイムパスワードによって認証されている

これ以外の場合、フラグはfalseに設定されます。

true

Resumeフィールド


Resumeフィールドの表
フィールド名 履歴書のアップロードの有無 Indeed 履歴書の有無 内容
file 必須 バイナリの履歴書ファイルを含むオブジェクト。
text 任意 テキスト形式の履歴書。ユーザーが Indeed 履歴書を使用している場合にのみ提供されます。
html 任意 履歴書の形式。ユーザーが Indeed 履歴書を使用している場合にのみ提供されます。
json 任意 JSON形式の履歴書データ。以下の Indeed 履歴書をご覧ください。

Resumeファイルフィールド


Resumeファイルフィールドの表
名前 説明
data Base 64を使用してエンコードされた、ファイルの生のバイナリバイト。 SGVsbG8h=
fileName アップロードされた履歴書のファイル名。Indeed 履歴書を使用している場合、ファイル名は自動生成されます。 resume.txt
contentType 履歴書ファイルの拡張子で識別されるコンテンツの種類。 application/octet-stream

Indeed 履歴書フィールド

配列のような(Array-like)オブジェクトには、_totalフィールドとvaluesフィールドが含まれます。_totalフィールドは、配列の長さを示す整数です。valuesフィールドは、_totalオブジェクトを含むJSON配列です。


Indeed 履歴書フィールドの表
フィールド名 種類 内容
firstName 文字列 応募者の名前。
lastName 文字列 応募者の姓。
headline 文字列 応募者の履歴書の見出し。
summary 文字列 応募者の履歴書の概要。
publicProfileUrl url ユーザーの Indeed 履歴書を閲覧するためのURL(公開されている場合)。
additionalInfo 文字列 その他の追加情報。
phoneNumber 文字列 ユーザーの電話番号(ユーザーの Indeed 履歴書に記載がある場合)。
location オブジェクト ユーザーの位置情報を表すJSONオブジェクト(入力されている場合)。
location.city 文字列 応募者の居住する市区町村。
location.country 文字列 応募者の居住国。
location.postalCode 文字列 応募者の居住地の郵便番号。
Personal details オブジェクト 応募者から提出された個人情報詳細
注意:これらは各フィールドに記載されている一部の市場でのみ該当します。
skills 文字列 応募者のスキル。
positions array-like 職務内容オブジェクトのarray-likeオブジェクト。
educations array-like 学歴オブジェクトのarray-likeオブジェクト。
links array-like リンクオブジェクトのarray-likeオブジェクト。
awards array-like 功績オブジェクトのarray-likeオブジェクト。
certifications array-like 資格オブジェクトのarray-likeオブジェクト。
associations array-like 関連団体オブジェクトのarray-likeオブジェクト。
patents array-like 特許オブジェクトのarray-likeオブジェクト。
publications array-like 出版物オブジェクトのarray-likeオブジェクト。
militaryServices array-like 兵役オブジェクトのarray-likeオブジェクト。

個人情報詳細フィールド


個人情報詳細フィールドの表
フィールド名 種類 該当市場 説明
highestLevelOfEducation 単一値 アラブ首長国連邦、オーストラリア、ベルギー、ブラジル、カナダ、チリ、コロンビア、コスタリカ、チェコ、デンマーク、エクアドル、スペイン、英国、香港、ハンガリー、アイルランド、イタリア、ルクセンブルク、メキシコ、ナイジェリア、オランダ、ノルウェー、パナマ、ペルー、ポーランド、ポルトガル、ルーマニア、ロシア、スウェーデン、トルコ、台湾、ウクライナ、ウルグアイ、ベネズエラ、ベトナム、南アフリカ 応募者が最終学歴を選択できる、該当市場向けの学歴のドロップダウン。 GCSEまたは同等の
高等教育ディプロマ
employmentEligibility 単一値 アラブ首長国連邦、オーストラリア、バーレーン、エジプト、英国、香港、イタリア、クウェート、モロッコ、ニュージーランド、オマーン、カタール、ロシア、サウジアラビア、シンガポール 求職者がその国で就労する資格を持つかどうかを尋ねる質問。 はい
highestCareerLevel 単一値 フランス、香港、インド、韓国、ベトナム、南アフリカ 求職者は業務経験を4つのレベルから選択可能。 新卒
industry 複数値 アラブ首長国連邦、アルゼンチン、バーレーン、ブラジル、チリ、中国、コロンビア、コスタリカ、エクアドル、エジプト、スペイン、フランス、英国、アイルランド、インド、韓国、クウェート、ルクセンブルク、モロッコ、メキシコ、ナイジェリア、オマーン、パナマ、ペルー、カタール、ロシア、サウジアラビア、トルコ、台湾、ウクライナ、ウルグアイ、ベネズエラ、南アフリカ 応募者が働いている、または専門とする業界を選択できるドロップダウン。 芸術および娯楽
driversLicense 複数値 アルゼンチン、ベルギー、チリ、コロンビア、コスタリカ、チェコ、エクアドル、スペイン、英国、イタリア、日本、メキシコ、オランダ、パナマ、ペルー、ロシア、トルコ、ウルグアイ、ベネズエラ、南アフリカ 各市場向けにローカライズされた運転免許のオプションのドロップダウン。 普通免許
dateOfBirth 日付 アラブ首長国連邦、アルゼンチン、バーレーン、ブラジル、クック諸島、中国、コロンビア、コスタリカ、エクアドル、エジプト、スペイン、フランス、香港、インドネシア、インド、イタリア、日本、韓国、クウェート、モロッコ、メキシコ、マレーシア、ナイジェリア、オマーン、パナマ、ペルー、ポルトガル、カタール、ロシア、サウジアラビア、シンガポール、トルコ、台湾、ウクライナ、ウルグアイ、ベネズエラ、ベトナム、南アフリカ 日、月、年の3つのドロップダウン。順序は市場ごとにローカライズされています。 年月日(dd/MM/yyyy)
educationDescription 自由記述 スイス、ドイツ、ノルウェー、スウェーデン、ウクライナ、ウルグアイ、ベトナム 求職者が学歴を記載可能。 自由記述
gender 単一値 日本 求職者の性別。 女性
disability 単一値 ブラジル、イタリア、メキシコ、南アフリカ さまざまな障がいに関するオプションのドロップダウン(BR)。その他の市場については、「はい」または「いいえ」。 認知障がい
または
「はい」
ethnicity 単一値 南アフリカ 民族に関するオプションのドロップダウン。 アフリカ人
veteranStatus 単一値 韓国 求職者の兵役の経験。 該当する
NYSCStatus 単一値 ナイジェリア 求職者のNYSCステータスに関するドロップダウン。 継続中
employmentSupportStatus 単一値 韓国 求職者の就労支援の状況。 該当する
willingToTravel 単一値 アルゼンチン、チリ、コロンビア、コスタリカ、エクアドル、スペイン、メキシコ、パナマ、ペルー、ウルグアイ、ベネズエラ 求職者の出張への意欲に関するドロップダウン。 はい
europeanUnionWorkPermit 単一値 アイルランド 求職者が欧州での就労許可を持っているかどうかを尋ねる質問。 はい
citizenship 単一値 フィリピン、シンガポール、南アフリカ 求職者の市民権に関するドロップダウン。 南アフリカ共和国の市民
IDP チェックボックス ウクライナ 求職者が国内避難民であるかどうかを尋ねる質問。 IDP(国内避難民)
employmentEligibilityMultiCountries 複数値 スペイン、インド 求職者が就労資格を有する国について尋ねる質問のドロップダウン。 アフガニスタン
idNumber 数値 ブラジル、イタリア、トルコ、南アフリカ 求職者にID番号の入力を促す質問。 数値
totalYearsOfExperience 数値 ID、IN 求職者に経験年数を尋ねる質問。 3年
hobbiesAndInterests 自由記述 チェコ、ハンガリー、韓国、ルクセンブルク、ポーランド、ロシア 求職者に趣味や興味を尋ねる質問。 自由記述

Indeed 履歴書の職歴情報(position)フィールド


Indeed 履歴書の職歴情報(position)フィールドの表
フィールド名 種類 説明
title 文字列 職種名。 プロダクトマネージャー
company 文字列 会社名。 Indeed
location 文字列 勤務地。 テキサス州オースティン
description 文字列 職務内容。 --------
startDateMonth 整数 就業を開始した月を表す1から12の間の整数(入力されていない場合は-1)。 9月
startDateYear 整数 就業を開始した年度(入力されていない場合は-1)。 2007年
endDateMonth 整数 退職した月を表す1から12の間の整数(入力されていない場合は-1)。 -1
endDateYear 整数 退職した年度(入力されていない場合は-1)。 -1
endCurrent boolean この仕事がユーザーの現職かどうかを示すフラグ true

Indeed 履歴書の学歴情報(education)フィールド


Indeed 履歴書の学歴情報(education)フィールドの表
フィールド名 種類 説明
degree 文字列 この教育機関で取得した学位。 学士
field 文字列 この教育機関で専攻した分野。 コンピュータサイエンス
school 文字列 教育機関の名称。 テキサス大学
location 文字列 教育機関の所在地。 テキサス州オースティン
startDateYear 整数 入学した年度(入力されていない場合は-1)。 2007年
endDateYear 整数 卒業した年度(入力されていない場合は-1)。 -1
endCurrent boolean この教育機関に在学中であることを示すフラグ。 true

Indeed 履歴書のリンク(link)フィールドの表
フィールド名 種類 説明
url 文字列 リンクのURL。 https://www.indeed.com

Indeed 履歴書の功績(award)フィールド


Indeed 履歴書の功績(award)フィールドの表
フィールド名 種類 説明
title 文字列 功績の名称。 Indeed 最優秀PM
description 文字列 功績の内容。 社内で最も優秀なPMとして表彰。
dateMonth 整数 受賞した月を表す1から12の間の整数(入力されていない場合は-1)。 9月
dateYear 整数 受賞した年度(入力されていない場合は-1)。 2007年

Indeed 履歴書の資格情報(certification)フィールド


Indeed 履歴書の資格情報(certification)フィールドの表
フィールド名 種類 説明
title 文字列 資格の名称。 PMP
description 文字列 資格の内容。 プロジェクトマネジメントプロフェッショナルの資格
startDateMonth 整数 取得した月を表す1から12の間の整数(入力されていない場合は-1)。 9月
startDateYear 整数 取得した年度(入力されていない場合は-1)。 2007年
endDateMonth 整数 資格が失効した月を表す1から12の間の整数(入力されていない場合は-1)。 -1
endDateYear 整数 資格が失効した年度(入力されていない場合は-1)。 -1
endCurrent boolean この資格が現在も有効であることを示すフラグ。 true

Indeed 履歴書の関連団体(association groups)フィールド


Indeed 履歴書の関連団体(association groups)フィールドの表
フィールド名 種類 説明
title 文字列 団体の名称。 ソサエティ・フォー・テクニカル・コミュニケーション
description 文字列 この団体についての説明。 テクニカルコミュニケーションに携わるプロフェッショナルの団体。
startDateMonth 整数 入会した月を表す1から12の間の整数(入力されていない場合は-1)。 9月
startDateYear 整数 入会した年度(入力されていない場合は-1)。 2007年
endDateMonth 整数 退会した月を表す1から12の間の整数(入力されていない場合は-1)。 -1
endDateYear 整数 退会した年度(入力されていない場合は-1)。 -1
endCurrent boolean 現在もこの団体に所属していることを示すフラグ。 true

Indeed 履歴書の特許(patent)フィールド


Indeed 履歴書の特許(patent)フィールドの表
フィールド名 種類 説明
title 文字列 特許の名称。 --------
description 文字列 この特許についての説明。 --------
patentNumber 文字列 特許番号。 --------
url 文字列 この特許のURL。 --------
dateMonth 整数 特許を取得した月を表す1から12の間の整数(入力されていない場合は-1)。 9月
dateYear 整数 特許を取得した年度(入力されていない場合は-1)。 2007年

Indeed 履歴書の出版物(publication)フィールド


Indeed 履歴書の出版物(publication)フィールドの表
フィールド名 種類 説明
title 文字列 出版物の名称。 --------
description 文字列 この出版物についての説明。 --------
url 文字列 この出版物のURL。 --------
dateDay 整数 日付を表す数字(入力されていない場合は-1)。 9月
dateMonth 整数 月を表す1から12の間の整数(入力されていない場合は-1)。 9月
dateYear 整数 出版年(入力されていない場合は-1)。 2007年

Indeed 履歴書の兵役(military service)フィールド


Indeed 履歴書の兵役(military service)フィールドの表
フィールド名 種類 説明
serviceBranch 文字列 所属する五軍の軍種。 --------
branch 文字列 五軍内所属時の組織。 --------
rank 文字列 所属時の階級。 --------
description 文字列 所属時についての説明。 --------
commendations 文字列 所属時に受けた表彰。 --------
startDateMonth 整数 入隊した月を表す1から12の間の整数(入力されていない場合は-1)。 9月
startDateYear 整数 入隊した年度(入力されていない場合は-1)。 2007年
endDateMonth 整数 除隊した月を表す1から12の間の整数(入力されていない場合は-1)。 -1
endDateYear 整数 除隊した年度(入力されていない場合は-1)。 -1
endCurrent boolean 現在も軍隊に所属していることを示すフラグ。 true

POSTの信頼性

postUrlに対して送信されるPOSTリクエストには、そのPOSTの信頼性を証明するために使用されるHTTPヘッダが含まれています。Indeed エントリーでは、共有APIシークレットを使用して、HMAC-SHA1アルゴリズムを利用したメッセージの署名が算出されます。この署名はX-Indeed-Signature HTTPヘッダとして送信されます。以下のコード例は、メッセージの署名がどのように生成されるかを示します。

C#(version 4.0)を利用した場合

using System;
usingSystem.Diagnostics;
usingSystem.Security.Cryptography;
usingSystem.Text;
 
classMainClass {
  publicstatic void Main (string[] args) {
    String message = getMessage();
    String apiSecret = "your api secret key";
    String signature = computeSignature(message, apiSecret);
    if(signature.Equals("m7I9OcotC2GxmVEVAufv5TD7lEk=")) {
      Console.WriteLine("B64 HMAC SHA1: "+signature);
    } elseConsole.WriteLine("invalid value: "+signature);
  }
   
  staticstring computeSignature(string input, String key) {
      byte[] keyBytes = Encoding.UTF8.GetBytes(key);
      HMACSHA1 myhmacsha1 = newHMACSHA1(keyBytes);
      byte[] inputBytes = Encoding.UTF8.GetBytes(input);
      byte[] hash = myhmacsha1.ComputeHash(inputBytes);
      returnSystem.Convert.ToBase64String(hash);
  }
   
  staticstring getMessage() {
    return"{"locale":"en_US","applicant":{"fullName":"John 
Doe","email":"john.doe@example.com"}}";
  }
   
}

Java(version 1.8)を利用した場合

import javax.crypto.Mac;
importjavax.crypto.spec.*;
importjavax.crypto.SecretKey;
importjava.util.Base64;
 
publicclass Main {
 
    publicstatic void main(String[] args) {
 
        String message = getMessage();
        String apiSecret = "your api secret key";
        String signature = computeSignature(message, apiSecret);
        if(!signature.equals("m7I9OcotC2GxmVEVAufv5TD7lEk="))
            System.out.println("invalid value "+signature);
        elseSystem.out.println("B64 HMAC SHA1: "+signature);
 
    }
 
    staticString computeSignature(String message, String apiSecret) {
        try{
            finalbyte[] keyBytes = apiSecret.getBytes();
            finalSecretKey signingKey = new SecretKeySpec(keyBytes, "HmacSHA1");
            finalMac mac = Mac.getInstance("HmacSHA1");
            mac.init(signingKey);
            returnnew 
String(Base64.getEncoder().encode(mac.doFinal(message.getBytes("UTF-8"))));
        } catch(Exception e) {
            System.out.println(e.getMessage());
            thrownew RuntimeException(e);
        }
    }
 
    publicstatic String getMessage() {
        return"{"locale":"en_US","applicant":{"fullName":"John 
Doe","email":"john.doe@example.com"}}";
    }
}

Perl(version 5.0)を利用した場合

use Digest::SHA qw(hmac_sha1_base64);
useEncode qw(encode);
 
# your secrete key
my$key  = "your api secret key";
# test message
my$message = get_message();
# compute signature
my$signature = hmac_sha1_b64_string($key, $message);
 
if($signature eq "m7I9OcotC2GxmVEVAufv5TD7lEk=") {
    print"B64 HMAC SHA1: " . $signature, "n";
} else{
    print"invalid value! ", $signature, "n";
}
 
subhmac_sha1_b64_string {
    my($key, $data) = @_;
    my$keybtes = encode("UTF8", $key);
    my$databytes = encode("UTF8", $message);
    my$b64digest = hmac_sha1_base64($databytes, $keybtes);
    # Perl does not pad b64 output, so we have to do it manually
    while(length($b64digest) % 4) {
        $b64digest.= '=';
    }
   return$b64digest;
}
 
subget_message {
    return"{"locale":"en_US","applicant":{"fullName":"John 
Doe","email":"john.doe@example.com"}}";
}

PHP(version 7.0)を利用した場合

function sign($str, $key) {
    $opts=  OPENSSL_RAW_DATA;
    $digest= hash_hmac("sha1", $str, $key, $raw_output = TRUE);
    $signature= base64_encode($digest);
    return$signature;
}
 
$api_secret= "your api secret key";
$message= "{"locale":"en_US","applicant":{"fullName":"John 
Doe","email":"john.doe@example.com"}}";
 
$signature= sign($message,$api_secret);
 
if( $signature!= "m7I9OcotC2GxmVEVAufv5TD7lEk=")
    print("invalid value ". $signature);
elseprint("B64 HMAC SHA1: " . $signature);

Python(version 2.7)を利用した場合

from hashlib import sha1
importhmac
importbase64
 
# your secret key
secret ="your api secret key".encode("utf-8")
# test message
message ="{"locale":"en_US","applicant":{"fullName":"John 
Doe","email":"john.doe@example.com"}}".encode('UTF-8')
# compute the hash
message_hashed =hmac.new(secret, message, sha1)
digest =message_hashed.digest()
# b64 encode the hash...this is the message authentication value
signature =base64.b64encode(digest)
ifsignature != "m7I9OcotC2GxmVEVAufv5TD7lEk=":
    print"invalid value "+signature
else:
    print'B64 HMAC SHA1: ' + signature

Python(version 3.6)を利用した場合

from hashlib import sha1
importhmac
importbase64
 
# your secret key
secret ="your api secret key".encode("utf-8")
# test message
message ="{"locale":"en_US","applicant":{"fullName":"John 
Doe","email":"john.doe@example.com"}}".encode("UTF-8")
# compute the hash
message_hashed =hmac.new(secret, message, sha1)
# b64 encode the hash...this is the message authentication value
signature =base64.b64encode(message_hashed.digest()).decode("UTF-8")
ifsignature != "m7I9OcotC2GxmVEVAufv5TD7lEk=":
    print("invalid value "+signature)
else:
    print("B64 HMAC SHA1: "+ signature)

メール

応募をメールで受け取ることを選択した場合は、ボタンの設定で、メールの設定属性を指定する必要があります。ユーザーが応募を完了すると、ユーザーのフルネームとメールアドレスが記載され、送付状と履歴書が添付されたメールが Indeed から送信されます。ユーザーが Indeed 履歴書を使用して応募している場合は、このバージョンの履歴書がメールに直接記載され、履歴書のPDFバージョンが添付されます。このメールアドレスは暗号化されることが必要になります。

暗号化されたメールの例

<span class="indeed-apply-widget"
    data-indeed-apply-apiToken="8f57d522dc544a737f70ad5828d5ace1"
    data-indeed-apply-jobLocation="New York, NY 10110"
    data-indeed-apply-jobCompanyName="Your Company"
    data-indeed-apply-jobTitle="Test Engineer"
    data-indeed-apply-email="b18d0be4c173dfa2b7cb7856e7c7b6f02a563867a9df67ca208c8b9654966299">
 </span>

暗号化と復号処理

メールを介して Indeed エントリーを利用する場合、Indeed が応募を送信する宛先のメールを暗号化する必要があります。128ビットの秘密鍵を利用した AES アルゴリズムを用いたメール暗号化を Indeed は推奨しています。暗号利用モードは PKCS5 パディングを利用した Cipher Block Chaining (CBC) です。初期化ベクトルは、00の16バイトです。

注意:XMLフィード内の各求人に対し、data-indeed-apply-email属性に含めるメールアドレスは1つのみにしてください。複数のアドレスを含めるとエラーが発生し、Indeed エントリーがこの求人から削除されます。

メール暗号化の手順

  1. 秘密鍵を使って、最初の16バイトを利用する128ビットの秘密鍵を生成します。
  2. UTF-8でエンコードされたプレーンテキストのメールのバイト数を読み取ります。
  3. AESアルゴリズムと128ビットキーを使用してメールを暗号化します。CBCモードおよびPKCS5パディングを必ずご利用ください。
  4. 暗号化されたバイトを16進数列に変換します。
  5. この16進数列をdata-indeed-apply-email属性として使用します。

次に、暗号化されたメールをプレーンテキストのメールの代わりに使用します。Indeed エントリーでは、暗号化されたメールが使用されていると認識されます。

暗号化されたメールの例

<span class="indeed-apply-widget"
	data-indeed-apply-apiToken="8e94c9959e5021fc7f70ad5828d5ace1"
	data-indeed-apply-jobLocation="Austin TX"
	data-indeed-apply-jobCompanyName="Your Company"
	data-indeed-apply-jobTitle="Engineer"
	data-indeed-apply-email="b18d0be4c173dfa2b7cb7856e7c7b6f02a563867a9df67ca208c8b9654966299">
</span>

暗号化と復号処理の例

C#(version 4.0)を利用した場合

using System.Text; using System.IO; using System; using System.Security.Cryptography; public class IA_email_encryption_test { public static void Main(string[] args) { string email = "john.doe@example.com"; string key = "your api secret key"; // only use first 16 bytes of the key byte[] keybytes = Encoding.UTF8.GetBytes(key); byte[] truncatedkeybytes = new byte[16]; Array.Copy(keybytes , truncatedkeybytes , 16); // initialization vector is all 0's; no additonal initilization required byte[] iv = new byte[16]; byte[] ciphertext = Encrypt(email, truncatedkeybytes, iv); string hexciphertext = ByteArrayToHexString(ciphertext); if(!hexciphertext.Equals( "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb")) { Console.WriteLine("invalid encrypted value!"); } else { Console.WriteLine("hex encoded encrypted email: "+hexciphertext); // we decrypt merely as an exercise string decrypted = Decrypt(ciphertext, truncatedkeybytes, iv); Console.WriteLine("Decrypted E-mail: "+decrypted); } } public static byte[] Encrypt(string plainText, byte[] key, byte[] iv ) { var cypher = new AesManaged(); cypher.Mode = CipherMode.CBC; cypher.Padding = PaddingMode.PKCS7; cypher.KeySize = 128; cypher.BlockSize = 128; cypher.Key = key; cypher.IV = iv; var icTransformer = cypher.CreateEncryptor(); var msTemp = new MemoryStream(); var csEncrypt = new CryptoStream(msTemp, icTransformer, CryptoStreamMode.Write); var sw = new StreamWriter(csEncrypt); sw.Write(plainText); sw.Close(); sw.Dispose(); csEncrypt.Clear(); csEncrypt.Dispose(); byte[] bResult = msTemp.ToArray(); return bResult; } public static string Decrypt(byte[] ciphertext, byte[] key, byte[] iv ) { var cypher = new AesManaged(); cypher.Mode = CipherMode.CBC; cypher.Padding = PaddingMode.PKCS7; cypher.KeySize = 128; cypher.BlockSize = 128; cypher.Key = key; cypher.IV = iv; var icTransformer = cypher.CreateDecryptor(); var msTemp = new MemoryStream(ciphertext); var csDecrypt = new CryptoStream(msTemp, icTransformer, CryptoStreamMode.Read); var sr = new StreamReader(csDecrypt); string plaintext = sr.ReadToEnd(); csDecrypt.Clear(); csDecrypt.Dispose(); return plaintext; } private static string ByteArrayToHexString(byte[] bytes) { StringBuilder sbHex = new StringBuilder(); foreach (byte b in bytes) sbHex.AppendFormat("{0:x2}", b); return sbHex.ToString(); } }
using System.Text;
using System.IO;
using System;
using System.Security.Cryptography;

public class IA_email_encryption_test {

  public static void Main(string[] args) {
    
    string email = "john.doe@example.com";
    string key = "your api secret key";
    
    // only use first 16 bytes of the key
    byte[] keybytes = Encoding.UTF8.GetBytes(key);
    byte[] truncatedkeybytes = new byte[16];
    Array.Copy(keybytes , truncatedkeybytes , 16);
    // initialization vector is all 0's; no additonal initilization required
    byte[] iv = new byte[16];
    
    byte[] ciphertext = Encrypt(email, truncatedkeybytes, iv);
    
    string hexciphertext = ByteArrayToHexString(ciphertext);
    
    if(!hexciphertext.Equals( "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb")) {
      Console.WriteLine("invalid encrypted value!");
    } else {
      Console.WriteLine("hex encoded encrypted email: "+hexciphertext);
      // we decrypt merely as an exercise
      string decrypted = Decrypt(ciphertext, truncatedkeybytes, iv);
      Console.WriteLine("Decrypted E-mail: "+decrypted);
    }
  }  
  
  public static byte[] Encrypt(string plainText, byte[] key, byte[] iv ) {
   
    var cypher = new AesManaged();
    cypher.Mode = CipherMode.CBC;
    cypher.Padding = PaddingMode.PKCS7;
    cypher.KeySize = 128;
    cypher.BlockSize = 128;
    cypher.Key = key;
    cypher.IV = iv;

    var icTransformer = cypher.CreateEncryptor();
    var msTemp = new MemoryStream();

    var csEncrypt = new CryptoStream(msTemp, icTransformer, CryptoStreamMode.Write);
    var sw = new StreamWriter(csEncrypt);
    sw.Write(plainText);
    sw.Close();
    sw.Dispose();

    csEncrypt.Clear();
    csEncrypt.Dispose();

    byte[] bResult = msTemp.ToArray();
    
    return bResult;
  }
  
  public static string Decrypt(byte[] ciphertext, byte[] key, byte[] iv ) {
    
    var cypher = new AesManaged();
    cypher.Mode = CipherMode.CBC;
    cypher.Padding = PaddingMode.PKCS7;
    cypher.KeySize = 128;
    cypher.BlockSize = 128;
    cypher.Key = key;
    cypher.IV = iv;

    var icTransformer = cypher.CreateDecryptor();
    var msTemp = new MemoryStream(ciphertext);

    var csDecrypt = new CryptoStream(msTemp, icTransformer, CryptoStreamMode.Read);
    var sr = new StreamReader(csDecrypt);
    
    string plaintext = sr.ReadToEnd();

    csDecrypt.Clear();
    csDecrypt.Dispose();

    return plaintext;
  }
  

  private static string ByteArrayToHexString(byte[] bytes)
  {
      StringBuilder sbHex = new StringBuilder();
      foreach (byte b in bytes)
          sbHex.AppendFormat("{0:x2}", b);
      return sbHex.ToString();
  }
  
}

Java(version 1.8)を利用した場合

import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.lang.RuntimeException;
import javax.crypto.Cipher;
import javax.crypto.spec.*;
import javax.crypto.spec.SecretKeySpec;

public class Main {

    public static void main(String[] args) {

        String email = "john.doe@example.com";
        String apiSecret = "your api secret key";
        String encrypted_email = encrypt(email, apiSecret);
        String decrypted_email = decrypt(encrypted_email, apiSecret);
        if(encrypted_email.equals("eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb")) {
            System.out.println("B64 encoded encrypted email: "+encrypted_email);
            System.out.println("decrypted email: "+decrypted_email);
        } else {
            System.out.println("invalid encrypted value!");
        }

    }

    static String encrypt(String message, String apiSecret) {
        try {
            // get api secret bytes
            byte[] keyBytes = apiSecret.getBytes(Charset.forName("UTF-8"));
            // get message bytes
            byte[] message_bytes = message.getBytes("UTF-8");
            // note that we only use the first 16 bytes of the the key
            SecretKeySpec key = new SecretKeySpec(keyBytes, 0, 16, "AES");
            // get appropriate cipher using PKCS5 padding
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            IvParameterSpec ivspec = new IvParameterSpec(new byte[]{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            cipher.init(Cipher.ENCRYPT_MODE, key, ivspec);
            // encrypt the message
            byte[] email_encrypted = cipher.doFinal(message_bytes);
            // this is the value that should be sent to Indeed
            return bytesToHexString(email_encrypted);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            throw new RuntimeException(e);
        }
    }

    static String decrypt(String message, String apiSecret) {
        try {
            // get api secret bytes
            byte[] keyBytes = apiSecret.getBytes(Charset.forName("UTF-8"));
            // get message bytes
            byte[] message_bytes = message.getBytes(Charset.forName("UTF-8"));
            // convert from b64 encoding
            message_bytes = decodeHex(message_bytes);
            // Create a SecretKeySpec using api secret
            // note that we only use the first 16 bytes of the the key
            SecretKeySpec key = new SecretKeySpec(keyBytes, 0, 16, "AES");
            // get appropriate cipher using PKCS5 padding
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            IvParameterSpec ivspec = new IvParameterSpec(new byte[]{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            cipher.init(Cipher.DECRYPT_MODE, key, ivspec);
            // decrypt the message
            byte[] email_decrypted = cipher.doFinal(message_bytes);
            return new String(email_decrypted, "UTF-8");
        } catch (Exception e) {
            System.out.println(e.getMessage());
            throw new RuntimeException(e);
        }
    }

    static String bytesToHexString(byte[] in) {
        final StringBuilder builder = new StringBuilder();
        for(byte b : in) {
            builder.append(String.format("%02x", b));
        }
        return builder.toString();
    }

    static byte[] decodeHex(byte[] data) throws Exception {
        String text = new String(data, "UTF-8");
        char[] chars = text.toCharArray();

        int len = chars.length;
        byte[] out = new byte[len >> 1];
        int i = 0;

        for(int j = 0; j < len; ++i) {
            int f = toDigit(chars[j], j) << 4;
            ++j;
            f |= toDigit(chars[j], j);
            ++j;
            out[i] = (byte)(f & 255);
        }
        return out;
    }

    static int toDigit(char ch, int index) throws Exception {
        int digit = Character.digit(ch, 16);
        if (digit == -1) {
            throw new Exception("Illegal hexadecimal character " + ch + " at index " + index);
        } else {
            return digit;
        }
    }

}

Perl(version 5.0)を利用した場合

use Crypt::CBC;
use Encode;

# your secret key
my $secret = encode('UTF-8', 'your api secret key');
# truncate key to 16 bytes
my $key = substr($secret, 0, 16);
# initialization vector of zeros
my $iv = "\0" x 16;
# create cipher
my $cipher = Crypt::CBC-&gt;new( -literal_key =&gt; 1,
 -header =&gt; 'none',
 -key =&gt; $key,
 -keysize =&gt; 16,
 -iv =&gt; $iv,
 -cipher =&gt; "Crypt::OpenSSL::AES"
 );
# Encrypt the UTF-8 encoded string into a hex version of the data
my $email_encrypted = $cipher-&gt;encrypt_hex(encode('UTF-8', 'john.doe@example.com'));

if($email_encrypted eq 'eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb') {
	print "Hex value of encrypted: $email_encryptedn";
	# Decrypt the hex string to see if it's still intact
	my $email_decrypted = $cipher-&gt;decrypt_hex($email_encrypted);
	print "Decrypted: $email_decryptedn";
} else {
	print "invalild encrypted value! $email_encryptedn";
}

PHP(version 7.0)を利用した場合

function pkcs5_pad ($text) {
    $blocksize = 16;
    $pad = $blocksize - (strlen($text) % $blocksize);
    $text .= str_repeat(chr($pad), $pad);
    return $text;
}

function pkcs5_unpad($text) {
    $pad = ord($text{strlen($text)-1});
    if ($pad > strlen($text)) return false;
    if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
    return substr($text, 0, -1 * $pad);
}

function encrypt($str, $key) {
    $iv = str_repeat("\0", 16);
    $str = pkcs5_pad($str);
    $opts =  OPENSSL_RAW_DATA;
    $encrypted = openssl_encrypt($str, 'AES-128-CBC', $key, $opts, $iv);
    return $encrypted;
}

function decrypt($str, $key) {
    $iv = str_repeat(""\0", 16);
    $opts =  OPENSSL_RAW_DATA;
    $decrypted = openssl_decrypt($str, 'AES-128-CBC', $key, $opts, $iv);
    return pkcs5_unpad($decrypted);
}

$api_secret = "your api secret key";
$email_address = "john.doe@example.com";

// truncate api-secret to first 16 bytes
$newkey = mb_strcut($api_secret, 0, 16, "UTF8");
// encrypt
$encrypted = encrypt($email_address, $newkey);
// we decrypt merely as an exercise
$decrypted = decrypt($encrypted, $newkey);
// this is the value to send to Indeed
$encryptedhex = bin2hex($encrypted);
if($encryptedhex != "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfba655e21c3309d9343206ae55866764e8")
    print("invalid encrypted hex value!");
print("Hex value of encrypted: " . $encryptedhex . "n");
print("Decrypted: " . $decrypted . "n");

Python(version 2.7)を利用した場合

# https://pypi.python.org/pypi/pycryptodome/3.5.1
from Crypto.Cipher import AES
# https://pypi.python.org/pypi/pkcs7/0.1.2
from pkcs7 import PKCS7Encoder
# your secret key
secret = 'your api secret key'.encode('utf-8')
# truncate key to 16 bytes
key_bytes = secret[0:16]
# initialization vector of zeros
iv = '\0' * 16
# the email address to encrypt
message_plaintext = 'john.doe@example.com'
# pad the plaintext to 16 byte boundary
PKCS7encoder = PKCS7Encoder()
message_plaintext_padded = PKCS7encoder.encode(message_plaintext);
# encrypt the message bytes
cipher = AES.new(key_bytes, AES.MODE_CBC, iv)
message_encrypted_raw = cipher.encrypt(message_plaintext_padded)
# this is the value that should be sent to Indeed
message_encrypted_hex = message_encrypted_raw.encode('hex')
# we need a new instance for decrypt because the ciphers are stateful
decipher = AES.new(key_bytes, AES.MODE_CBC, iv)
# we decrypt here simply as an exercise
message_decrypted_raw = decipher.decrypt(message_encrypted_raw)
# strip padding
message_decrypted = PKCS7encoder.decode(message_decrypted_raw)
# confirm encrypted value
if message_encrypted_hex == "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb":
  print 'Hex value of encrypted: ' + message_encrypted_hex
  print 'Decrypted: '+message_decrypted
else: 
  print 'invalild encrypted value! ' + message_encrypted_hex

Python(version 3.6)を利用した場合

# https://pypi.python.org/pypi/pycryptodome/3.5.1
from Crypto.Cipher import AES
# https://pypi.python.org/pypi/pkcs7/0.1.2
from pkcs7 import PKCS7Encoder
# your secret key
secret = 'your api secret key'.encode('utf-8')
# truncate key to 16 bytes
key_bytes = secret[0:16]
# initialization vector of zeros
iv = bytes('\0' * 16, encoding='UTF-8')
# the email address to encrypt
message_plaintext = 'john.doe@example.com'
# pad the plaintext to 16 byte boundary
PKCS7encoder = PKCS7Encoder()
message_plaintext_padded = PKCS7encoder.encode(message_plaintext)
# encrypt the message bytes
message_bytes = message_plaintext_padded.encode('UTF-8')
cipher = AES.new(key_bytes, AES.MODE_CBC, iv)
message_encrypted_raw = cipher.encrypt(message_bytes)
# this is the value that should be sent to Indeed
message_encrypted_hex = message_encrypted_raw.hex()
# we decrypt here simply as an exercise
decipher = AES.new(key_bytes, AES.MODE_CBC, iv)
message_decrypted_raw = decipher.decrypt(message_encrypted_raw).decode('UTF-8')
# strip padding
message_decrypted = PKCS7encoder.decode(message_decrypted_raw)
# confirm encrypted value
if message_encrypted_hex == "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb":
  print('Hex value of encrypted: ' + message_encrypted_hex)
  print('Decrypted: ' + message_decrypted)
else: 
  print('invalild encrypted value! ' + message_encrypted_hex)

(Go back to the top)


Indeed エントリー連携のテストと監視

Indeed では、Indeed を利用する求職者と採用企業のエクスペリエンスを向上させることを目標としています。連携の問題を避けるために、以下のセクションを再度確認してください。

Indeed エントリーのテスト

Indeed エントリーテストツールを使用して、Indeed エントリーのコードをテストしてください。テストツールを利用すると、求人のメタデータを入力し、適切なXML要素またはHTMLコードを生成できます。また、独自のXML要素またはHTMLコードを入力して、Indeed で正しくメタデータが読み込まれるかご確認いただけます。

連携の状態の監視

Indeed エントリーと連携する際、以下のことを監視できるように設定してください。

  • 連携で求人への応募がきちんと送信されている。
  • 質問のファイルが一貫して利用可能であり、有効なものになっている。

Indeed は応募書類が提携企業に正しく送信されているかどうかを、その他のステータスと共に監視します。問題が発生した際には、Indeed からご連絡いたします。場合によっては問題が解決するまで、一部またはすべての求人に対しての応募機能が無効となる場合があります。

注意:未送信の状態の応募が削除されることはありません。エラーが発生した場合は、最初の応募から一定の期間が経過すると自動的に応募が再試行されます。送信できなかった場合、応募書類は30日間保持され、要望に応じて再度送信を試みることができます。

連携の問題を避けるため、送信が正常に完了したすべての応募にHTTPのステータスコード200を必ず返してください。Indeed エントリーはその他のHTTPステータスコード、POSTタイムアウト、接続タイムアウトをエラーとみなします。

加えて、以下の状況に応じたステータスを返してください。

  • 409(Conflict):重複した応募がすでにお客様のシステム内に存在する場合に使用してください。
  • 重複した応募とは、求職者が120日以内に同じメールアドレスから同じjobidに対して行った応募を指します。
  • 注意:ステータスが409の応募は重複した応募とみなされ、自動的に再度送信されることはありません。
  • 410(Gone):Indeed が投稿しようとしている求人の有効期限が切れている場合、または応募が終了している場合に使用してください。

求人がスクリーニング用の質問を導入している場合、それらのファイルをホストするページが、以下の状態であることを確認してください。

  • 一貫して常に利用可能。
  • リダイレクトを行わない。
  • 適切な形式になっている。

連携に関するよくある問題

以下のよくある問題が、POST や Question URL などを利用した連携のエラーの原因となる可能性があります。


よくある問題の表
問題 解決策
別ページへのリダイレクト(例:301リダイレクト)

POSTやQuestion URLがリダイレクトを含まないように必ず確認してください。

プロトコルの変更(例:HTTPをHTTPSに変更)が必要な場合は、以下の手順を必ず行ってください。

  • 301のリダイレクトエラーを送信する
  • ロケーションヘッダにURLの正確なHTTPSバージョンを含める
これ以外の動作はエラーの原因となります。
有効期限の切れたSSL証明書 SSL証明書を更新してください。詳細については、信頼されたルート証明書の一覧をご覧ください。
誤って設定されたSSL

問題の分析と診断を行えるように、SSLサーバーテストを使用してください(例:https://www.ssllabs.com/ssltest/)。

以下の手順を行ってください。

  • 完全な証明書チェーンを送信する
  • チェーン内のいずれの証明書もダウンロードを追加で必要としないことを確認する
これ以外の動作はエラーの原因となります。

質問のJSONが無効、または Indeed が提示する必須条件に従っていない。 スクリーニング用の質問の要件を確認してください。変更のプレビューを行うには、Indeed エントリー質問のテストツールをご利用ください。
リソースにアクセスする際のその他の問題(404エラー、500エラー、タイムアウト)

通信量の多い期間に対処できるように、貴社のリソースが確実に拡張できるような対策を実装してください。また、発生する可能性のある問題を Indeed が調査できるように、適切な HTTP レスポンスコードを使用してください。

Indeed では投稿のサイズを制限していないため、Indeed からのあらゆるサイズの投稿を確実に処理できるようにしてください。このリクエストに対応できない場合は、投稿が大きすぎることを示すHTTP 413エラーを返してください。

XMLと連携チェックリスト

クライアントサクセス担当者にXMLフィードをお送りいただく前に、以下のチェックリストを確認してください。お客様と Indeed 双方でXMLを提出する作業を円滑に進められるように、本チェックリストの内容を行ってください。

  1. XMLファイルの上部にバージョン、エンコーディング、パブリッシャー情報が含まれているか確認してください。
     <?xml version=”1.0” encoding=”utf-8”?>
        <source>
        <publisher> Example Job Site</publisher>
        <publisherurl>http://www.examplejobsite.com</publisherurl>
        <lastbuilddate>Thu, 15 Oct 2015 09:44:37 GMT</lastbuilddate>
    
  2. XMLファイルにすべての採用企業を記載してください。多くの求人情報は Indeed 側にすでにリストとして存在しているため、採用企業の記載が漏れている場合にはXMLファイルが公開されなくなります。
  3. 親会社のサブブランドや子会社の求人も含め、自社Webサイトに掲載されているすべての求人を確実に含めるようにしてください。キャリアポータルに記載された求人掲載数とXMLに記載された求人掲載数に相違があると、提供されたXMLを介して提示される求人が目に留まりにくくなる可能性があります。 注意:すべての求人で、<url>タグの中に固有のURLを記載する必要があります。
  4. XMLフィードの要素のセクションに記載された、以下のすべてのフィールドが存在し、正しい形式になっているか確認してください。
  5. ファイルからすべてのテスト用求人を削除してください。残っている場合、ファイルが却下されます。
  6. フィードに含めた Indeed エントリーデータを必ずテストしてください。問題が発生した場合、トラブルシューティングを行えるようにアライアンスマネージャーまたはクライアントサクセス担当者までご連絡ください。
    • Indeed エントリーボタンのテストツールとXML内の Indeed エントリーコードを使用して、フィードが正しく動作するか確認してください。
    • メタデータに含まれているすべてのURL(joburl、posturl、questions)が完全にURLエンコードされていることを確認してください。
    • analyticsのフィールドで、応募をオーガニック、有料掲載、Indeed ターゲット広告に分類できることを確認してください。
      詳しくは、Indeed エントリーのトップレベルのJSONフィールドをご覧ください。
    • すべての求人が、<job>ノード内に Indeed エントリーを含んでいるか確認してください。
    • メールを受信方法として選択している場合、メールアドレスが適切に暗号化されていることを必ず確認してください。
    • SSL証明書が有効で最新の状態であることを確認してください。
    • 質問項目テストツールを使用して、質問のJSONを確認してください。 注意:このテストツールは、有料掲載のデータ情報を提供しません。
    • スクリーニング用の質問項目が、ベストプラクティスに従っていることを確認してください。
  7. 上記のステップをすべて完了していただくと、以下の手順のいずれかが実行可能になります。
    • XMLを Indeed のFTPにアップロードする(アカウントが必要な場合は、クライアントサクセス担当者までご連絡ください)。
    • FTPまたはURLのGETリクエストにホストされているファイルを更新する。
  8. XMLを提出する前に内容を確認しますので、クライアントサクセス担当者にお問い合わせください。