2026年6月16日

2026年6月16日

WordPress保守の請求・契約管理|契約範囲の決め方とWP内で台帳を持つ方法

クライアントのWordPressサイトの保守契約と請求は、「契約範囲」「対応の目安(SLA)」「契約台帳」「請求の流れ」の4つを先に決めておくと、件数が増えても抜け漏れなく回せます。この記事では、制作会社やフリーランスが保守を受託する前提で、契約内容の決め方、WordPress内に社内用の契約台帳を作る方法、請求ツールの選び方、記録の残し方を解説します。法律や税務の判断が必要な部分は、弁護士・税理士などの専門家に確認してください。

保守の請求・契約で起きやすいトラブル

保守契約のトラブルは、技術よりも「約束の曖昧さ」と「管理の抜け」から起きます。よくあるのは次のような例です。

  • 月額費用に含まれる作業の範囲が曖昧で、デザイン修正や記事入稿まで無償で求められる
  • 契約の更新月を把握しておらず、解約や値上げの連絡が遅れる
  • ドメインやサーバーの契約名義が制作側のまま、支払いだけクライアントから受けている
  • 請求書の送付漏れや入金確認の漏れに、数か月たってから気づく

どれも、契約時に決めておくことと、一覧で管理することでかなり防げます。

契約範囲を決める

まず、月額費用に含まれる作業と含まれない作業を書き出します。WordPress保守でよく含めるのは次のような作業です。

  • WordPress本体・テーマ・プラグインの更新と、更新後の表示確認
  • 定期バックアップと、復元が必要になったときの作業
  • アップタイム監視とSSL証明書・ドメインの期限確認
  • 軽微な修正(「月○時間まで」のように時間で区切るのが一般的)

含まれない作業としては、新規ページの制作、デザイン変更、原因がクライアント側の操作にある障害の復旧、サーバー移転などがあります。範囲外の作業は「別途見積もり」とし、時間単価や最低料金を決めておくと、その都度の交渉が減ります。

作業時間の枠を設ける場合は、使わなかった時間を翌月に繰り越すかどうかも決めておきます。繰り越しを認めると後でまとめて大きな依頼が来ることがあるため、繰り越しなし、または上限付きにする例が多いです。

SLA(対応の目安)を一般的な言葉で書く

SLA(サービスレベルの合意)は、大げさな保証ではなく「どのくらいの時間で対応を始めるか」の目安として書くのが現実的です。小規模な保守では、次の項目を決めておけば十分なことが多いです。

  • 受付時間: 平日の営業時間内か、夜間・休日も受けるか
  • 初動の目安: 連絡を受けてから状況確認を始めるまでの時間。「解決までの時間」とは分けて書く
  • 緊急度の区分: サイト全体が表示されない、一部の機能が動かない、表示の軽微な崩れ、などの区分と、それぞれの目安
  • 連絡手段: メール、チャット、電話のどれで受けるか

稼働率の保証や返金条件まで書く場合は、サーバー会社の障害など自分たちで制御できない要因をどう扱うかが問題になります。こうした条項を入れるときは、契約書のひな形を含めて弁護士に確認してもらうのが安全です。

契約台帳に記録する項目

契約の情報は、サイトごとに1行(1件)でまとめた台帳で管理します。最低限、次の項目があると更新や請求の漏れを防げます。

  • 契約者(会社名・担当者・請求先)とサイトURL
  • 契約プラン、月額費用、請求サイクル(毎月・年払いなど)、支払方法
  • 契約開始日、次回更新日、解約・変更の申し出期限
  • ドメイン・サーバー・有料プラグインのライセンスの契約名義と更新日
  • 変更履歴(プラン変更、値上げ、作業範囲の追加など)

管理画面のパスワードやFTPの認証情報は台帳に書かず、パスワード管理ツールに分けて保管します。台帳が漏れたときの被害を小さくするためです。

台帳はスプレッドシートでも始められますが、変更履歴を残したい、作業メモと一緒に管理したいという場合は、社内用のWordPressに契約台帳を作る方法もあります。

WordPress内に社内用の契約台帳を作る

ここでは、管理画面からだけ見られる非公開の投稿タイプ「保守契約」を作ります。クライアントのサイトではなく、社内専用のWordPress(ログイン必須にした環境や、社内ネットワークからだけ開ける環境)に入れてください。

作業前に社内用サイトのバックアップを取り、次のコードを wp-content/plugins/maint-contract-ledger/maint-contract-ledger.php として保存して、管理画面の「プラグイン」から有効化します。

<?php
/**
 * Plugin Name: Maintenance Contract Ledger
 * Description: 社内用の保守契約台帳(管理画面のみで表示)
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_action( 'init', function () {
	register_post_type( 'maint_contract', array(
		'labels'          => array(
			'name'          => '保守契約',
			'singular_name' => '保守契約',
			'add_new_item'  => '保守契約を追加',
			'edit_item'     => '保守契約を編集',
		),
		'public'          => false, // サイト側・検索結果には出さない
		'show_ui'         => true,  // 管理画面には表示する
		'show_in_rest'    => false, // REST API からは読ませない
		'menu_icon'       => 'dashicons-clipboard',
		'supports'        => array( 'title', 'editor', 'revisions', 'custom-fields' ),
		'capability_type' => array( 'maint_contract', 'maint_contracts' ),
		'map_meta_cap'    => true,
	) );
} );

// 有効化したときに、管理者グループだけへ台帳の操作権限を付与する
register_activation_hook( __FILE__, function () {
	$role = get_role( 'administrator' );
	if ( ! $role ) {
		return;
	}
	$caps = array(
		'edit_maint_contracts',
		'edit_others_maint_contracts',
		'edit_private_maint_contracts',
		'edit_published_maint_contracts',
		'publish_maint_contracts',
		'read_private_maint_contracts',
		'delete_maint_contracts',
		'delete_others_maint_contracts',
		'delete_private_maint_contracts',
		'delete_published_maint_contracts',
	);
	foreach ( $caps as $cap ) {
		$role->add_cap( $cap );
	}
} );

ポイントは3つです。public を false にすることでサイト側のURLや検索結果に出なくなり、show_in_rest を false にすることでREST API経由で読まれなくなります。また、capability_type に専用の名前を指定しているため、編集者や投稿者の権限では台帳を開けず、有効化時に権限を付与した管理者だけが操作できます。

有効化すると管理画面のメニューに「保守契約」が表示されます。タイトルにクライアント名とサイト名、本文に契約内容のメモを書き、更新日やプランはカスタムフィールドに入れます。REST APIを無効にしているためクラシックエディターの画面になり、カスタムフィールドの入力欄が見当たらない場合は、画面右上の「表示オプション」で表示を有効にしてください。リビジョンを有効にしているので、プラン変更などの履歴もあとから比較できます。

すでに有効化したあとでコードを修正し、権限の設定を変えた場合は、プラグインを一度無効化して再度有効化しないと権限の付与処理が実行されない点に注意してください。

請求の仕組みを選ぶ

保守費用の請求は、法人のクライアントであれば請求書を発行して銀行振込で受け取る形が一般的です。毎月同じ金額を請求するなら、定期請求に対応したクラウド請求書サービスや会計ソフトを使うと、発行と送付の手間が減り、入金の消し込みもまとめて管理できます。どのサービスを選ぶ場合も、使っている会計ソフトとの連携や、現行の制度に対応した書式で発行できるかを確認してください。

個人事業主や小規模事業者が相手で、クレジットカードによる自動の継続課金にしたい場合は、自社サイトにWooCommerceと継続課金の公式拡張(WooCommerce Subscriptions)を組み合わせる方法や、決済サービス側の定期課金機能を使う方法があります。カード決済は入金漏れが減る一方で、カードの期限切れによる決済失敗への対応や、決済手数料、解約手続きの導線を用意する必要があります。拡張機能や決済サービスの機能・料金は変わることがあるため(2026年10月現在)、導入時に公式ページで最新の情報と最終更新日を確認してください。

どの方法でも、入金予定日を過ぎたら誰がいつ連絡するか、何か月未入金が続いたら保守作業を止めるか、といった未入金時の流れを契約書に書いておくと、言いにくい連絡で迷わずに済みます。

記録の残し方と専門家への確認

請求書、契約書、見積書、作業記録は、あとから「いつ、何を、いくらで約束したか」を示す根拠になります。保存先と保存期間を決め、電子データで受け取ったものは電子データのまま整理して残すのが基本です。

請求書の記載事項や保存方法については、インボイス制度や電子帳簿保存法など税務上のルールが関わります。どの書式で発行し、どのように保存すべきかは事業の形態によって変わるため、顧問税理士や税務署の案内で確認してください。契約書のひな形や、損害賠償・免責の条項についても、自社だけで判断せず弁護士の確認を受けることをおすすめします。

まとめ

  • 保守契約では、月額に含む作業と含まない作業、作業時間の枠、範囲外作業の料金を先に決める
  • SLAは保証ではなく、受付時間・初動の目安・緊急度の区分として一般的な言葉で書く
  • 契約台帳には更新日、解約の申し出期限、ドメインやサーバーの名義を記録し、認証情報は別管理にする
  • 社内用WordPressに非公開の投稿タイプと専用権限で台帳を作ると、変更履歴も残せる
  • 請求は請求書と振込、定期請求サービス、継続課金のいずれかから選び、税務・法務は専門家に確認する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲