A buyer who has a boat to sell before they can buy is not a delayed customer — they’re two transactions in one. 23% of new CRM leads. 67% purchase conversion rate.
A buyer who has a boat to sell before they can buy is not a delayed customer — they’re two transactions in one. The trade-in evaluation form captures the seller’s contact information and unit specs at the moment they’re actively looking for a place to bring their boat. Most of them end up buying.
The Anchor build had no trade-in path. Buyers with a boat to trade had to call, find a phone number, wait for a callback, describe their boat verbally, and go through a disjointed process. Most didn’t bother. They went to a different dealer who had a trade-in form.
After launch: 23% of new CRM leads came through the trade-in form. Of those, 67% ultimately purchased a unit from the dealer — compared to 31% of cold browse leads.
The form doesn’t produce a value estimate. It captures specs and creates a lead. The actual evaluation happens via a human callback. Automated valuations produce incorrect numbers; incorrect numbers create conflict; conflict kills deals. Capture the info, let the salesperson call back with the real number.
add_action( 'wp_ajax_nopriv_[client]_submit_trade_in', '[client]_handle_trade_in' );
add_action( 'wp_ajax_[client]_submit_trade_in', '[client]_handle_trade_in' );
function [client]_handle_trade_in(): void {
check_ajax_referer( '[client]_trade_in', 'trade_nonce' );
$lead_id = [client]_create_lead( [
'first_name' => sanitize_text_field( $_POST['first_name'] ?? '' ),
'last_name' => sanitize_text_field( $_POST['last_name'] ?? '' ),
'email' => sanitize_email( $_POST['email'] ?? '' ),
'phone' => sanitize_text_field( $_POST['phone'] ?? '' ),
'source' => 'trade_in',
'status' => 'new',
] );
// Store trade-in specs as lead meta
$trade_fields = [
'trade_year', 'trade_make', 'trade_model', 'trade_length',
'trade_hours', 'trade_condition', 'trade_asking', 'trade_notes',
];
foreach ( $trade_fields as $field ) {
if ( ! empty( $_POST[ $field ] ) ) {
update_post_meta( $lead_id, '[client]_' . $field,
sanitize_text_field( $_POST[ $field ] ) );
}
}
[client]_send_trade_in_notification( $lead_id );
[client]_send_trade_in_confirmation( $lead_id );
[client]_enroll_in_sequence( $lead_id, 'trade_in' );
wp_send_json_success( [ 'message' => 'Received. We\'ll call you within 24 hours.' ] );
}
The sales team gets an email with all trade-in specs immediately. The subject line includes the unit specs so they can see what’s coming without opening the email:
function [client]_send_trade_in_notification( int $lead_id ): void {
$year = get_post_meta( $lead_id, '[client]_trade_year', true );
$make = get_post_meta( $lead_id, '[client]_trade_make', true );
$model = get_post_meta( $lead_id, '[client]_trade_model', true );
$name = get_post_meta( $lead_id, '[client]_first_name', true ) . ' '
. get_post_meta( $lead_id, '[client]_last_name', true );
$subject = "Trade-In Request: {$year} {$make} {$model} from {$name}";
$message = [client]_render_trade_in_notification_email( $lead_id );
wp_mail(
[client]_get_setting( 'sales_email', get_option( 'admin_email' ) ),
$subject,
$message,
[ 'Content-Type: text/html; charset=UTF-8' ]
);
}
The trade-in form captures intent at the highest-quality moment: when a buyer is actively looking to transition out of their current boat and into a new one. They’re not browsing. They’re planning. That intent signal — combined with the spec data the form captures — means the sales team arrives at the callback call already knowing what they’re evaluating.
The “request an evaluation” framing, rather than “get an instant offer,” sets correct expectations. The form is a step in a conversation, not a transaction. That framing produces leads who expect a callback and are available when the sales team calls.
23% of new CRM leads from the trade-in form. Of those leads, 67% converted to a purchase (vs. 31% for cold browse leads). The high conversion rate reflects selection bias: someone willing to fill out a detailed form about their current boat is far more committed to transacting than a casual browser.
The trade-in form was placed in three locations: the main navigation (“Sell Your Boat”), the homepage below the hero, and a sticky bottom banner on unit detail pages.
Every lesson stays free — no account, no paywall, no email gate, ever. But if you’d rather have this system standing on your business than wire all 48 lessons yourself, leave your email. We’ll send you a direct line to a build — and you’ll be first to hear when we add new tools to the curriculum.
None of this gates a single lesson. The curriculum was free before you got here and it stays that way.
You came here to understand the system, and now you do. If you’d rather have it standing on your business than spend the next three months wiring it yourself, GAP Concierge is the same architecture from these lessons — a white-label AI agent that knows your catalog and captures your leads — set up for you, from $97/mo.
See GAP Concierge →