Skip to main content

Overview

After a job completes, Adapt provides detailed results showing page health, performance metrics, and cache analysis. This guide helps you interpret results and take action on issues.

Job Summary

The job summary provides high-level metrics:
curl https://adapt.app.goodnative.co/v1/jobs/job_123abc/results \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
Response:
{
  "status": "success",
  "data": {
    "job_id": "job_123abc",
    "summary": {
      "total_pages": 150,
      "successful_pages": 145,
      "failed_pages": 5,
      "avg_response_time": 234,
      "total_bytes_transferred": 15728640
    },
    "issues": {
      "not_found_pages": [...],
      "slow_pages": [...],
      "server_errors": [...],
      "redirects": [...]
    },
    "performance_breakdown": {
      "under_1s": 120,
      "1s_to_3s": 25,
      "3s_to_5s": 3,
      "over_5s": 2
    },
    "cache_analysis": {
      "cache_hits": 120,
      "cache_misses": 25,
      "cache_errors": 5,
      "hit_ratio": 0.8
    }
  }
}

Understanding Progress Metrics

Task Counts

MetricDescription
total_tasksTotal pages discovered
completed_tasksPages successfully checked
failed_tasksPages that returned errors
skipped_tasksPages excluded by filters
percentageProgress as a percentage
Progress percentage excludes skipped tasks: (completed + failed) / (total - skipped) × 100

Job Status

Jobs progress through these states:
  • created: Job queued, waiting to start
  • running: Actively crawling pages
  • completed: All pages processed successfully
  • failed: Encountered a critical error
  • cancelled: Manually stopped by user

Performance Metrics

Response Times

Adapt measures two response times for each page:
The initial request measures baseline performance and cache status:
  • Fast: < 1000ms
  • Moderate: 1000-3000ms
  • Slow: 3000-5000ms
  • Very Slow: > 5000ms
If the first request resulted in a cache MISS or EXPIRED, Adapt makes a second request to warm the cache and measure improved performance.This helps identify pages that benefit most from cache warming.

Performance Breakdown

"performance_breakdown": {
  "under_1s": 120,      // Fast pages
  "1s_to_3s": 25,       // Moderate pages
  "3s_to_5s": 3,        // Slow pages
  "over_5s": 2          // Very slow pages
}
Focus on pages in the “over_5s” category first — these have the biggest impact on user experience.

Cache Analysis

Cache Status Values

StatusMeaningAction
HITPage served from cache✅ Optimal performance
MISSPage not in cache⚠️ Cache warming recommended
EXPIREDCached version outdated⚠️ Cache warming recommended
DYNAMICPage cannot be cachedℹ️ Expected for dynamic content
ERRORCache system error🔴 Investigation needed

Cache Hit Ratio

The cache hit ratio indicates how effectively your cache is serving content:
  • > 0.8 (80%+): Excellent cache performance
  • 0.6 - 0.8 (60-80%): Good, room for improvement
  • < 0.6 (< 60%): Poor, consider cache warming
Run cache warming jobs after publishing to maximise cache hit ratios.

Identifying Issues

"not_found_pages": [
  {
    "url": "https://example.com/missing-page",
    "status_code": 404,
    "discovered_from": "link_crawl"
  }
]
Common causes:
  • Deleted pages still linked from other pages
  • Typos in internal links
  • Outdated navigation menus
The discovered_from field shows whether the broken link was found in your sitemap or discovered by crawling links.

Slow Pages

"slow_pages": [
  {
    "url": "https://example.com/slow-page",
    "response_time": 8500,
    "status_code": 200
  }
]
Common causes:
  • Large unoptimised images
  • Slow database queries
  • Third-party scripts blocking rendering
  • Cache misses
Check the cache_status — many slow pages improve dramatically after cache warming.

Server Errors (5xx)

"server_errors": [
  {
    "url": "https://example.com/error-page",
    "status_code": 500,
    "error_message": "Internal server error"
  }
]
Immediate action required:
  • Check server logs for error details
  • Verify database connectivity
  • Check for recent code deployments

Redirects

"redirects": [
  {
    "url": "https://example.com/old-page",
    "redirect_url": "https://example.com/new-page",
    "status_code": 301
  }
]
301 redirects are appropriate for:
  • Permanently moved content
  • URL canonicalisation (www vs non-www)
  • HTTPS enforcement
Update internal links if:
  • Multiple redirects in a chain (redirect chains)
  • High-traffic pages redirecting
  • Redirects adding unnecessary latency

Viewing Task Details

Get detailed information about individual pages:
curl "https://adapt.app.goodnative.co/v1/jobs/job_123abc/tasks?limit=50&offset=0&status=failed" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
Response:
{
  "status": "success",
  "data": {
    "tasks": [
      {
        "id": "task_789xyz",
        "job_id": "job_123abc",
        "url": "https://example.com/page1",
        "status": "failed",
        "status_code": 404,
        "response_time": null,
        "cache_status": "miss",
        "error_message": "Page not found",
        "source_type": "sitemap",
        "source_url": "https://example.com/sitemap.xml",
        "created_at": "2023-05-18T12:35:01Z",
        "completed_at": "2023-05-18T12:40:15Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 2,
      "has_next": false
    }
  }
}

Filtering Tasks

Filter results by specific criteria:
ParameterDescriptionExample
statusTask status?status=failed
cacheCache status?cache=miss
pathURL path filter?path=/blog
sortSort order?sort=-response_time
limitResults per page?limit=100
offsetPagination offset?offset=50
Use ?cache=miss to find pages that would benefit most from cache warming.

Exporting Results

Adapt provides three export types:

1. Full Job Export

Export all tasks with complete details:
curl "https://adapt.app.goodnative.co/v1/jobs/job_123abc/export?type=job" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
Export only failed pages (404s and errors):
curl "https://adapt.app.goodnative.co/v1/jobs/job_123abc/export?type=broken-links" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

3. Slow Pages Report

Export pages with response times > 3000ms:
curl "https://adapt.app.goodnative.co/v1/jobs/job_123abc/export?type=slow-pages" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
Response:
{
  "status": "success",
  "data": {
    "job_id": "job_123abc",
    "domain": "example.com",
    "status": "completed",
    "export_type": "broken-links",
    "export_time": "2023-05-18T14:00:00Z",
    "total_tasks": 5,
    "columns": [
      {"key": "source_url", "label": "Found on"},
      {"key": "url", "label": "Broken link"},
      {"key": "status", "label": "Status"},
      {"key": "created_at", "label": "Date"}
    ],
    "tasks": [...]
  }
}
Exports are limited to 10,000 tasks. Use filtering for larger datasets.

Analytics Integration

When Google Analytics is connected, results include traffic data:
"page_views_7d": 1247,    // Last 7 days
"page_views_28d": 5891,   // Last 28 days
"page_views_180d": 28450  // Last 180 days
Prioritise fixing broken links and slow pages with high traffic — these have the biggest impact on users.

Best Practices

Don’t wait for issues to pile up. Review results after each crawl and fix broken links immediately.
Run crawls regularly and compare results to identify trends. Are response times improving or degrading?
Use analytics data to prioritise optimisation efforts. Fix slow pages with high traffic first.
Schedule a crawl immediately after publishing new content to warm your cache and ensure fast load times.
Export broken links and slow page reports to share with your team or clients.

Build docs developers (and LLMs) love