Prepare for launch: Add Google Analytics, enhanced SEO, and go-live checklist
This commit is contained in:
109
GO-LIVE-CHECKLIST.md
Normal file
109
GO-LIVE-CHECKLIST.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# UK Data Services - Go Live Checklist
|
||||
|
||||
## 🚀 Pre-Launch Checklist
|
||||
|
||||
### 1. Google Analytics Setup
|
||||
**REQUIRED**: Replace tracking codes in `index.php`
|
||||
|
||||
- [ ] **Get Google Analytics 4 Measurement ID** from your current site
|
||||
- Log into [Google Analytics](https://analytics.google.com)
|
||||
- Go to Admin → Property Settings → Data Streams
|
||||
- Copy your Measurement ID (format: `G-XXXXXXXXXX`)
|
||||
|
||||
- [ ] **Update tracking code** in `index.php` line ~52:
|
||||
```html
|
||||
<!-- Replace GA_MEASUREMENT_ID with your actual ID -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=YOUR_GA4_ID_HERE"></script>
|
||||
<script>
|
||||
gtag('config', 'YOUR_GA4_ID_HERE', {
|
||||
```
|
||||
|
||||
### 2. Google Tag Manager (Optional)
|
||||
If you use Google Tag Manager:
|
||||
- [ ] Get your GTM Container ID (format: `GTM-XXXXXXX`)
|
||||
- [ ] Uncomment and update GTM code in `index.php` lines ~59-67
|
||||
- [ ] Uncomment noscript tag after `<body>` tag
|
||||
|
||||
### 3. Microsoft Clarity (Optional)
|
||||
For additional user behavior analytics:
|
||||
- [ ] Sign up at [Microsoft Clarity](https://clarity.microsoft.com)
|
||||
- [ ] Get your Project ID
|
||||
- [ ] Uncomment and update Clarity code in `index.php` lines ~69-77
|
||||
|
||||
### 4. Social Media Images
|
||||
- [ ] Create/upload Open Graph image: `assets/images/og-image.jpg` (1200x630px)
|
||||
- [ ] Create/upload Twitter card image: `assets/images/twitter-card.jpg` (1200x600px)
|
||||
|
||||
### 5. Favicon & App Icons
|
||||
- [ ] Ensure `assets/images/favicon.ico` exists
|
||||
- [ ] Ensure `assets/images/apple-touch-icon.png` exists (180x180px)
|
||||
|
||||
### 6. SEO Verification
|
||||
- [ ] Submit sitemap to Google Search Console: `https://ukdataservices.co.uk/sitemap.xml`
|
||||
- [ ] Submit sitemap to Bing Webmaster Tools
|
||||
- [ ] Verify meta descriptions are under 160 characters
|
||||
- [ ] Test structured data with [Google Rich Results Test](https://search.google.com/test/rich-results)
|
||||
|
||||
### 7. Security & Performance
|
||||
- [ ] Enable HTTPS/SSL certificate
|
||||
- [ ] Test all security headers are working
|
||||
- [ ] Test website speed with [PageSpeed Insights](https://pagespeed.web.dev/)
|
||||
- [ ] Test mobile responsiveness
|
||||
|
||||
### 8. Content Review
|
||||
- [ ] Verify phone number: +44 1692 689150
|
||||
- [ ] Verify email: info@ukdataservices.co.uk
|
||||
- [ ] Check all links work correctly
|
||||
- [ ] Test contact form functionality
|
||||
- [ ] Test quote form functionality
|
||||
|
||||
### 9. Analytics Testing
|
||||
After going live:
|
||||
- [ ] Test Google Analytics is tracking pageviews
|
||||
- [ ] Test form submissions are being tracked
|
||||
- [ ] Verify real-time data appears in GA dashboard
|
||||
- [ ] Test 404 page tracking
|
||||
|
||||
### 10. Technical Setup
|
||||
- [ ] Update DNS to point to new server
|
||||
- [ ] Set up 301 redirects from old URLs if needed
|
||||
- [ ] Configure email forwarding if needed
|
||||
- [ ] Test all Docker containers are running properly
|
||||
|
||||
## 📊 Current Analytics Integration
|
||||
|
||||
The new site includes:
|
||||
|
||||
✅ **Google Analytics 4** with enhanced tracking:
|
||||
- Page views
|
||||
- Form submissions
|
||||
- User engagement
|
||||
- Custom events
|
||||
|
||||
✅ **Enhanced SEO Meta Tags**:
|
||||
- Comprehensive Open Graph tags
|
||||
- Twitter Card optimization
|
||||
- Search engine directives
|
||||
- Structured data for search results
|
||||
|
||||
✅ **Security Headers**:
|
||||
- Content Security Policy updated for analytics
|
||||
- XSS Protection
|
||||
- HTTPS enforcement
|
||||
- Clickjacking prevention
|
||||
|
||||
✅ **Performance Optimizations**:
|
||||
- Async loading of analytics scripts
|
||||
- Optimized images and fonts
|
||||
- Efficient CSS and JavaScript
|
||||
|
||||
## 🔧 Files Modified for Launch
|
||||
- `index.php` - Added analytics, enhanced SEO
|
||||
- Security headers updated for tracking domains
|
||||
- Meta tags optimized for search engines
|
||||
|
||||
## 📞 Support
|
||||
If you need help with any of these steps, contact your development team or refer to the Google Analytics documentation.
|
||||
|
||||
---
|
||||
**Last Updated**: June 2025
|
||||
61
assets/images/icon-web-scraping-v2.svg
Normal file
61
assets/images/icon-web-scraping-v2.svg
Normal file
@@ -0,0 +1,61 @@
|
||||
<svg width="60" height="60" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="webScrapingGrad2" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- Browser window with data -->
|
||||
<rect x="5" y="12" width="35" height="25" fill="none" stroke="url(#webScrapingGrad2)" stroke-width="2" rx="3"/>
|
||||
<rect x="5" y="12" width="35" height="6" fill="url(#webScrapingGrad2)" rx="3"/>
|
||||
|
||||
<!-- Browser dots -->
|
||||
<circle cx="9" cy="15" r="1" fill="white"/>
|
||||
<circle cx="12" cy="15" r="1" fill="white"/>
|
||||
<circle cx="15" cy="15" r="1" fill="white"/>
|
||||
|
||||
<!-- Data lines in browser -->
|
||||
<line x1="8" y1="22" x2="25" y2="22" stroke="url(#webScrapingGrad2)" stroke-width="1.5"/>
|
||||
<line x1="8" y1="26" x2="32" y2="26" stroke="url(#webScrapingGrad2)" stroke-width="1.5"/>
|
||||
<line x1="8" y1="30" x2="20" y2="30" stroke="url(#webScrapingGrad2)" stroke-width="1.5"/>
|
||||
<line x1="8" y1="34" x2="28" y2="34" stroke="url(#webScrapingGrad2)" stroke-width="1.5"/>
|
||||
|
||||
<!-- Extraction arrow -->
|
||||
<path d="M 42 25 Q 48 20 52 25" stroke="url(#webScrapingGrad2)" stroke-width="2" fill="none" marker-end="url(#extractArrow2)"/>
|
||||
|
||||
<!-- Database/storage -->
|
||||
<rect x="46" y="35" width="12" height="20" fill="none" stroke="url(#webScrapingGrad2)" stroke-width="2" rx="2"/>
|
||||
|
||||
<!-- Data rows in storage -->
|
||||
<line x1="48" y1="40" x2="56" y2="40" stroke="url(#webScrapingGrad2)" stroke-width="1"/>
|
||||
<line x1="48" y1="43" x2="54" y2="43" stroke="url(#webScrapingGrad2)" stroke-width="1"/>
|
||||
<line x1="48" y1="46" x2="56" y2="46" stroke="url(#webScrapingGrad2)" stroke-width="1"/>
|
||||
<line x1="48" y1="49" x2="52" y2="49" stroke="url(#webScrapingGrad2)" stroke-width="1"/>
|
||||
<line x1="48" y1="52" x2="55" y2="52" stroke="url(#webScrapingGrad2)" stroke-width="1"/>
|
||||
|
||||
<!-- Web network nodes -->
|
||||
<circle cx="15" cy="45" r="3" fill="url(#webScrapingGrad2)" opacity="0.7"/>
|
||||
<circle cx="25" cy="50" r="2.5" fill="url(#webScrapingGrad2)" opacity="0.7"/>
|
||||
<circle cx="35" cy="48" r="2" fill="url(#webScrapingGrad2)" opacity="0.7"/>
|
||||
|
||||
<!-- Connection lines -->
|
||||
<line x1="17" y1="46" x2="23" y2="49" stroke="url(#webScrapingGrad2)" stroke-width="1.5" opacity="0.6"/>
|
||||
<line x1="27" y1="50" x2="33" y2="48" stroke="url(#webScrapingGrad2)" stroke-width="1.5" opacity="0.6"/>
|
||||
|
||||
<!-- Data extraction particles -->
|
||||
<circle cx="44" cy="23" r="1" fill="url(#webScrapingGrad2)">
|
||||
<animate attributeName="cx" values="44;50;44" dur="2s" repeatCount="indefinite"/>
|
||||
<animate attributeName="opacity" values="1;0.3;1" dur="2s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
<circle cx="42" cy="27" r="0.8" fill="url(#webScrapingGrad2)">
|
||||
<animate attributeName="cx" values="42;48;42" dur="2.5s" repeatCount="indefinite"/>
|
||||
<animate attributeName="opacity" values="1;0.3;1" dur="2.5s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
|
||||
<defs>
|
||||
<marker id="extractArrow2" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto">
|
||||
<polygon points="0 0, 8 3, 0 6" fill="#667eea"/>
|
||||
</marker>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
@@ -1,12 +1,61 @@
|
||||
<svg width="60" height="60" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<linearGradient id="webScrapingGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect x="10" y="15" width="40" height="30" fill="none" stroke="url(#grad1)" stroke-width="3" rx="4"/>
|
||||
<line x1="15" y1="25" x2="35" y2="25" stroke="url(#grad1)" stroke-width="2"/>
|
||||
<line x1="15" y1="30" x2="45" y2="30" stroke="url(#grad1)" stroke-width="2"/>
|
||||
<line x1="15" y1="35" x2="40" y2="35" stroke="url(#grad1)" stroke-width="2"/>
|
||||
|
||||
<!-- Browser window with data -->
|
||||
<rect x="5" y="12" width="35" height="25" fill="none" stroke="url(#webScrapingGrad)" stroke-width="2" rx="3"/>
|
||||
<rect x="5" y="12" width="35" height="6" fill="url(#webScrapingGrad)" rx="3"/>
|
||||
|
||||
<!-- Browser dots -->
|
||||
<circle cx="9" cy="15" r="1" fill="white"/>
|
||||
<circle cx="12" cy="15" r="1" fill="white"/>
|
||||
<circle cx="15" cy="15" r="1" fill="white"/>
|
||||
|
||||
<!-- Data lines in browser -->
|
||||
<line x1="8" y1="22" x2="25" y2="22" stroke="url(#webScrapingGrad)" stroke-width="1.5"/>
|
||||
<line x1="8" y1="26" x2="32" y2="26" stroke="url(#webScrapingGrad)" stroke-width="1.5"/>
|
||||
<line x1="8" y1="30" x2="20" y2="30" stroke="url(#webScrapingGrad)" stroke-width="1.5"/>
|
||||
<line x1="8" y1="34" x2="28" y2="34" stroke="url(#webScrapingGrad)" stroke-width="1.5"/>
|
||||
|
||||
<!-- Extraction arrow -->
|
||||
<path d="M 42 25 Q 48 20 52 25" stroke="url(#webScrapingGrad)" stroke-width="2" fill="none" marker-end="url(#extractArrow)"/>
|
||||
|
||||
<!-- Database/storage -->
|
||||
<rect x="46" y="35" width="12" height="20" fill="none" stroke="url(#webScrapingGrad)" stroke-width="2" rx="2"/>
|
||||
|
||||
<!-- Data rows in storage -->
|
||||
<line x1="48" y1="40" x2="56" y2="40" stroke="url(#webScrapingGrad)" stroke-width="1"/>
|
||||
<line x1="48" y1="43" x2="54" y2="43" stroke="url(#webScrapingGrad)" stroke-width="1"/>
|
||||
<line x1="48" y1="46" x2="56" y2="46" stroke="url(#webScrapingGrad)" stroke-width="1"/>
|
||||
<line x1="48" y1="49" x2="52" y2="49" stroke="url(#webScrapingGrad)" stroke-width="1"/>
|
||||
<line x1="48" y1="52" x2="55" y2="52" stroke="url(#webScrapingGrad)" stroke-width="1"/>
|
||||
|
||||
<!-- Web network nodes -->
|
||||
<circle cx="15" cy="45" r="3" fill="url(#webScrapingGrad)" opacity="0.7"/>
|
||||
<circle cx="25" cy="50" r="2.5" fill="url(#webScrapingGrad)" opacity="0.7"/>
|
||||
<circle cx="35" cy="48" r="2" fill="url(#webScrapingGrad)" opacity="0.7"/>
|
||||
|
||||
<!-- Connection lines -->
|
||||
<line x1="17" y1="46" x2="23" y2="49" stroke="url(#webScrapingGrad)" stroke-width="1.5" opacity="0.6"/>
|
||||
<line x1="27" y1="50" x2="33" y2="48" stroke="url(#webScrapingGrad)" stroke-width="1.5" opacity="0.6"/>
|
||||
|
||||
<!-- Data extraction particles -->
|
||||
<circle cx="44" cy="23" r="1" fill="url(#webScrapingGrad)">
|
||||
<animate attributeName="cx" values="44;50;44" dur="2s" repeatCount="indefinite"/>
|
||||
<animate attributeName="opacity" values="1;0.3;1" dur="2s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
<circle cx="42" cy="27" r="0.8" fill="url(#webScrapingGrad)">
|
||||
<animate attributeName="cx" values="42;48;42" dur="2.5s" repeatCount="indefinite"/>
|
||||
<animate attributeName="opacity" values="1;0.3;1" dur="2.5s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
|
||||
<defs>
|
||||
<marker id="extractArrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto">
|
||||
<polygon points="0 0, 8 3, 0 6" fill="#667eea"/>
|
||||
</marker>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 663 B After Width: | Height: | Size: 3.1 KiB |
59
index.php
59
index.php
@@ -5,12 +5,16 @@ header('X-Frame-Options: DENY');
|
||||
header('X-XSS-Protection: 1; mode=block');
|
||||
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
|
||||
header('Referrer-Policy: strict-origin-when-cross-origin');
|
||||
header('Content-Security-Policy: default-src \'self\'; script-src \'self\' \'unsafe-inline\' https://cdnjs.cloudflare.com; style-src \'self\' \'unsafe-inline\' https://fonts.googleapis.com; font-src \'self\' https://fonts.gstatic.com; img-src \'self\' data:; connect-src \'self\';');
|
||||
header('Content-Security-Policy: default-src \'self\'; script-src \'self\' \'unsafe-inline\' https://cdnjs.cloudflare.com https://www.googletagmanager.com https://www.google-analytics.com https://www.clarity.ms; style-src \'self\' \'unsafe-inline\' https://fonts.googleapis.com; font-src \'self\' https://fonts.gstatic.com; img-src \'self\' data: https://www.google-analytics.com; connect-src \'self\' https://www.google-analytics.com https://analytics.google.com;');
|
||||
|
||||
// SEO and performance optimizations
|
||||
$page_title = "UK Data Services | Professional Web Scraping & Data Analytics Solutions";
|
||||
$page_description = "Leading UK provider of web scraping, data extraction, business intelligence, and analytics services. Transform your business with professional data solutions.";
|
||||
$canonical_url = "https://ukdataservices.co.uk/";
|
||||
$keywords = "web scraping UK, data extraction services, business intelligence, competitive analysis, price monitoring, data analytics, market research, web data mining";
|
||||
$author = "UK Data Services";
|
||||
$og_image = "https://ukdataservices.co.uk/assets/images/og-image.jpg";
|
||||
$twitter_card_image = "https://ukdataservices.co.uk/assets/images/twitter-card.jpg";
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
@@ -19,9 +23,11 @@ $canonical_url = "https://ukdataservices.co.uk/";
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo htmlspecialchars($page_title); ?></title>
|
||||
<meta name="description" content="<?php echo htmlspecialchars($page_description); ?>">
|
||||
<meta name="keywords" content="web scraping, data extraction, business intelligence, data analytics, UK data services, competitive analysis, market research">
|
||||
<meta name="author" content="UK Data Services">
|
||||
<meta name="keywords" content="<?php echo htmlspecialchars($keywords); ?>">
|
||||
<meta name="author" content="<?php echo htmlspecialchars($author); ?>">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta name="googlebot" content="index, follow">
|
||||
<meta name="bingbot" content="index, follow">
|
||||
<link rel="canonical" href="<?php echo htmlspecialchars($canonical_url); ?>">
|
||||
|
||||
<!-- Open Graph / Social Media -->
|
||||
@@ -29,19 +35,54 @@ $canonical_url = "https://ukdataservices.co.uk/";
|
||||
<meta property="og:url" content="<?php echo htmlspecialchars($canonical_url); ?>">
|
||||
<meta property="og:title" content="<?php echo htmlspecialchars($page_title); ?>">
|
||||
<meta property="og:description" content="<?php echo htmlspecialchars($page_description); ?>">
|
||||
<meta property="og:image" content="<?php echo htmlspecialchars($canonical_url); ?>assets/images/og-image.jpg">
|
||||
<meta property="og:image" content="<?php echo htmlspecialchars($og_image); ?>">
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:url" content="<?php echo htmlspecialchars($canonical_url); ?>">
|
||||
<meta name="twitter:title" content="<?php echo htmlspecialchars($page_title); ?>">
|
||||
<meta name="twitter:description" content="<?php echo htmlspecialchars($page_description); ?>">
|
||||
<meta name="twitter:image" content="<?php echo htmlspecialchars($canonical_url); ?>assets/images/twitter-card.jpg">
|
||||
<meta name="twitter:image" content="<?php echo htmlspecialchars($twitter_card_image); ?>">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="assets/images/favicon.ico">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="assets/images/apple-touch-icon.png">
|
||||
|
||||
<!-- Google Analytics 4 (GA4) -->
|
||||
<!-- TODO: Replace GA_MEASUREMENT_ID with your actual Google Analytics 4 Measurement ID -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'GA_MEASUREMENT_ID', {
|
||||
page_title: document.title,
|
||||
page_location: window.location.href
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- Google Tag Manager (Optional - if you use GTM) -->
|
||||
<!-- TODO: Replace GTM-XXXXXXX with your Google Tag Manager container ID -->
|
||||
<!--
|
||||
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
|
||||
-->
|
||||
|
||||
<!-- Microsoft Clarity (Optional) -->
|
||||
<!-- TODO: Replace CLARITY_PROJECT_ID with your Clarity project ID -->
|
||||
<!--
|
||||
<script type="text/javascript">
|
||||
(function(c,l,a,r,i,t,y){
|
||||
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
|
||||
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
|
||||
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
|
||||
})(window, document, "clarity", "script", "CLARITY_PROJECT_ID");
|
||||
</script>
|
||||
-->
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
@@ -76,6 +117,12 @@ $canonical_url = "https://ukdataservices.co.uk/";
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Google Tag Manager (noscript) -->
|
||||
<!-- TODO: Replace GTM-XXXXXXX with your Google Tag Manager container ID -->
|
||||
<!--
|
||||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
|
||||
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
-->
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar" id="navbar">
|
||||
<div class="nav-container">
|
||||
@@ -229,7 +276,7 @@ $canonical_url = "https://ukdataservices.co.uk/";
|
||||
<div class="services-grid">
|
||||
<div class="service-card animate-on-scroll" style="--animation-delay: 0.1s;">
|
||||
<div class="service-icon">
|
||||
<img src="assets/images/icon-web-scraping.svg" alt="Enterprise Web Intelligence">
|
||||
<img src="assets/images/icon-web-scraping-v2.svg" alt="Enterprise Web Intelligence">
|
||||
</div>
|
||||
<h3>Enterprise Web Intelligence & Monitoring</h3>
|
||||
<p>Our consultancy delivers strategic data acquisition solutions utilising advanced web intelligence platforms and proprietary extraction methodologies.</p>
|
||||
|
||||
Reference in New Issue
Block a user