ticketWP Logo
  • Products
    • Features
    • ticketWP vs Competitors
    • How it works
    • Automatiq
    • Victory Live
    • TicketNetwork
  • Services
    • Website Concierge Service
    • Marketing Automations
    • Ticket Inventory Manager
    • SMS Notification Service
  • Contact
  • Help
  • Features
  • Get Started
  • Contact
  • Get Help

Request a Call Back from ticketWP

It’s time to take control of your ticket website with WordPress. For once, you can actually own your website and have full control—no more restrictions!

Edit Content

    This site is protected by reCAPTCHA and the Google
    Privacy Policy and
    Terms of Service apply.

    Get Started with ticketWP
    Technology of the Secondary Ticket Market, Ticket Affiliates, Ticket Brokers

    Protect Your Business Access — Starting With API Keys

    March 24, 2025 [email protected] No comments yet
    api keys

    Let’s talk about something that’s often ignored but absolutely essential: your integration credentials.

    Securing API keys is crucial because they act as unique identifiers and secret tokens, controlling access to sensitive data and functionality, and their compromise can lead to unauthorized access, data breaches, and system disruptions.


    Why Secure Access Credentials Matter

    If someone gets access to the API connections for Ticket Evolution, TicketNetwork, VividSeats, or any major exchange, they can:

    • Download every order you’ve ever made
    • Access your full customer base
    • View and manipulate your ticket inventory
    • And more

    With just a few lines of code, your entire operation could be exposed.
    That’s why who you trust with your credentials matters — a lot


    You Control the Hosting and Platform

    We build your WordPress-based ticketing site and let you host it anywhere — AWS, GoDaddy, Liquid Web, whatever you want.

    You get ownership and freedom.


    Control Your Own Integration Setup

    With ticketWP, if you want we can install the site, then you change the admin password before you ever paste in your credentials. That way, only you have access.

    We never store your access keys — and we never need to.


    Built-In Website Security and Developer Access

    At ticketWP, protecting your platform is built into our DNA. You get full developer access:

    • FTP and SSH
    • WordPress theme and template code
    • Drag-and-drop page builders
    • Plugin flexibility and control
      and more!

    If You’re Hosting With a Provider Who Sells Tickets…

    Let’s be real — if your current provider also sells tickets, they’re your competitor.
    And if they also have your connection credentials… that’s a problem. The ticket exchange is different — they already have all your information.

    You’re not just sharing hosting — you’re sharing your business.


    Real Example: Test It for Yourself

    We built a simple PHP script — 283 lines — that connects to the Ticket Evolution API and shows all your orders. It even lets you export everything as a CSV.

    If you’re unsure, copy the script into ChatGPT, Claude, or Grok and ask:

    “What does this code do? Is it safe?”

    Then try it on your local machine or server with your real keys.
    You’ll see how powerful that access is. Now imagine if I built a system that matched your inventory against mine, downloaded your customers in real time, and tracked what tickets you purchased — when, how much — the sky’s the limit!

    We’re building one for TicketNetwork next — just to show how exposed your platform might be.


    ticketWP Gives You Ownership, Freedom, and Peace of Mind

    Beyond pricing, beyond support, beyond design flexibility — this is about security.

    If your API credentials are in the hands of someone who also competes with you, it’s time to move.

    We’re here to educate, support, and give you full control of your digital foundation.

    Learn more about Ticket Brokers

    Best practices for securely using API keys

    <?php
    $TE_API_TOKEN_VALUE = 'ENTER_YOUR_TOKEN_HERE';
    $TE_API_SECRET_VALUE = 'ENTER_YOUR_SECRET_HERE';
    $TE_API_OFFICE_ID_VALUE = 'ENTER_YOUR_OFFICE_ID_HERE';
    
    define('TE_API_URL', 'https://api.ticketevolution.com');
    define('TE_API_TOKEN', $TE_API_TOKEN_VALUE);
    define('TE_API_SECRET', $TE_API_SECRET_VALUE);
    define('TE_API_OFFICE_ID', $TE_API_OFFICE_ID_VALUE);
    
    // Get and process date parameters
    $startDate = !empty($_GET['start_date']) ? $_GET['start_date'] : date("Y-m-d", strtotime("-30 days"));
    $endDate = !empty($_GET['end_date']) ? $_GET['end_date'] : date("Y-m-d");
    
    // Pagination Setup
    $perPage = 20;
    $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    
    // Build API query parameters
    $queryParams = [
        "office_id" => TE_API_OFFICE_ID,
        "page" => $page,
        "per_page" => $perPage
    ];
    
    // Only add date filters if dates are set and not the default range
    if (!empty($_GET['start_date']) || !empty($_GET['end_date'])) {
        $queryParams["updated_at.gte"] = $startDate;
        $queryParams["updated_at.lte"] = $endDate;
    }
    
    // Add other filter parameters
    $allowedFilters = ['q', 'seller_id', 'buyer_id', 'order_id', 'state', 'type', 'event_date'];
    foreach ($allowedFilters as $filter) {
        if (!empty($_GET[$filter])) {
            $queryParams[$filter] = ($filter === 'seller_id' || $filter === 'buyer_id' || $filter === 'order_id') ? (int)$_GET[$filter] : $_GET[$filter];
        }
    }
    
    // Handle CSV export
    if (isset($_GET['export']) && $_GET['export'] === 'csv') {
        header('Content-Type: text/csv');
        header('Content-Disposition: attachment;filename="orders_filtered.csv"');
        $output = fopen('php://output', 'w');
    
        fputcsv($output, ['Order Received', 'Order ID', 'Buyer', 'Seller', 'Event', 'Tickets', 'Total Amount', 'State']);
    
        // Use the same query parameters but with more results per page
        $exportParams = $queryParams;
        $exportParams['per_page'] = 100;
    
        $queryString = http_build_query($exportParams);
        $method = "GET";
        $host = "api.ticketevolution.com";
        $path = "/v9/orders";
    
        // Generate signature - using the method from the successful test
        $string_to_sign = "$method $host$path?$queryString";
        $signature = base64_encode(hash_hmac('sha256', $string_to_sign, TE_API_SECRET, true));
    
        $url = "https://$host$path?$queryString";
        $headers = [
            "X-Token: " . TE_API_TOKEN,
            "X-Signature: " . $signature,
            "Accept: application/json"
        ];
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
    
        if ($httpCode !== 200) {
            die("Error: Unable to fetch orders for CSV. HTTP Code: $httpCode. Response: $response");
        }
    
        $data = json_decode($response, true);
    
        if (!isset($data['orders']) || empty($data['orders'])) {
            die("No orders found matching your criteria for CSV export.");
        }
    
        foreach ($data['orders'] as $order) {
            $item = $order['items'][0] ?? null;
            $event = $item && isset($item['ticket_group']['event']) ? $item['ticket_group']['event'] : null;
            $eventInfo = $event ? $event['name'] . " " . date("Y-m-d H:i", strtotime($event['occurs_at'] ?? 'now')) : 'N/A';
            $ticketInfo = $item ? "Qty: " . ($item['quantity'] ?? 'N/A') . " Price: $" . number_format($item['price'] ?? 0, 2) : 'N/A';
            $buyerInfo = ($order['buyer']['name'] ?? 'N/A') . " (ID: " . ($order['buyer']['id'] ?? 'N/A') . ") Brokerage: " . ($order['buyer']['brokerage']['name'] ?? 'N/A');
            $sellerInfo = ($order['seller']['name'] ?? 'N/A') . " (ID: " . ($order['seller']['id'] ?? 'N/A') . ") Brokerage: " . ($order['seller']['brokerage']['name'] ?? 'N/A');
    
            fputcsv($output, [
                date("Y-m-d H:i:s", strtotime($order['created_at'] ?? 'now')),
                $order['id'] ?? 'N/A',
                $buyerInfo,
                $sellerInfo,
                $eventInfo,
                $ticketInfo,
                "$" . number_format($order['total'] ?? 0, 2),
                $order['state'] ?? 'N/A'
            ]);
        }
    
        fclose($output);
        exit;
    }
    
    // For main page display
    $queryString = http_build_query($queryParams);
    $method = "GET";
    $host = "api.ticketevolution.com";
    $path = "/v9/orders";
    
    // Generate signature
    $string_to_sign = "$method $host$path?$queryString";
    $signature = base64_encode(hash_hmac('sha256', $string_to_sign, TE_API_SECRET, true));
    
    $url = "https://$host$path?$queryString";
    $headers = [
        "X-Token: " . TE_API_TOKEN,
        "X-Signature: " . $signature,
        "Accept: application/json"
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode !== 200) {
        die("Error: Unable to fetch orders. HTTP Code: $httpCode. Response: $response");
    }
    
    $data = json_decode($response, true);
    if (!isset($data['orders']) || empty($data['orders'])) {
        die("No orders found matching your criteria.");
    }
    
    $totalEntries = $data['total_entries'] ?? 0;
    $totalPages = ceil($totalEntries / $perPage);
    
    function sortUrl($field, $currentSort, $currentOrder) {
        $order = ($currentSort === $field && $currentOrder === 'asc') ? 'desc' : 'asc';
        return '?' . http_build_query(array_merge($_GET, ['sort' => $field, 'order' => $order]));
    }
    ?>
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>Ticket Evolution Orders</title>
        <style>
            table { border-collapse: collapse; width: 100%; }
            th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
            th { background-color: #f2f2f2; cursor: pointer; }
            th a { text-decoration: none; color: black; }
            .filter-form { margin-bottom: 20px; }
            .pagination { margin-top: 20px; }
            .export-btn { margin-bottom: 20px; }
        </style>
    </head>
    <body>
    <h2>Ticket Evolution Orders</h2>
    
    <div class="filter-form">
        <form method="GET">
            <label>Start Date: <input type="date" name="start_date" value="<?php echo htmlspecialchars($startDate); ?>"></label>
            <label>End Date: <input type="date" name="end_date" value="<?php echo htmlspecialchars($endDate); ?>"></label>
            <label>Search: <input type="text" name="q" value="<?php echo htmlspecialchars($_GET['q'] ?? ''); ?>" placeholder="Brokerage/Client name or ID"></label>
            <label>Seller ID: <input type="number" name="seller_id" value="<?php echo htmlspecialchars($_GET['seller_id'] ?? ''); ?>"></label>
            <label>Buyer ID: <input type="number" name="buyer_id" value="<?php echo htmlspecialchars($_GET['buyer_id'] ?? ''); ?>"></label>
            <label>Order ID: <input type="number" name="order_id" value="<?php echo htmlspecialchars($_GET['order_id'] ?? ''); ?>"></label>
            <label>State:
                <select name="state">
                    <option value="">All</option>
                    <option value="pending" <?php echo ($_GET['state'] ?? '') === 'pending' ? 'selected' : ''; ?>>Pending</option>
                    <option value="accepted" <?php echo ($_GET['state'] ?? '') === 'accepted' ? 'selected' : ''; ?>>Accepted</option>
                    <option value="rejected" <?php echo ($_GET['state'] ?? '') === 'rejected' ? 'selected' : ''; ?>>Rejected</option>
                    <option value="completed" <?php echo ($_GET['state'] ?? '') === 'completed' ? 'selected' : ''; ?>>Completed</option>
                </select>
            </label>
            <label>Type:
                <select name="type">
                    <option value="">All</option>
                    <option value="Order" <?php echo ($_GET['type'] ?? '') === 'Order' ? 'selected' : ''; ?>>Sale</option>
                    <option value="PurchaseOrder" <?php echo ($_GET['type'] ?? '') === 'PurchaseOrder' ? 'selected' : ''; ?>>Purchase</option>
                </select>
            </label>
            <input type="submit" value="Filter">
        </form>
    </div>
    
    <div class="export-btn">
        <a href="?<?php echo http_build_query(array_merge($_GET, ['export' => 'csv'])); ?>">Export to CSV (Filtered)</a>
    </div>
    
    <table>
        <tr>
            <th><a href="<?php echo sortUrl('created_at', $sortField ?? '', $sortOrder ?? ''); ?>">Order Received</a></th>
            <th><a href="<?php echo sortUrl('id', $sortField ?? '', $sortOrder ?? ''); ?>">Order ID</a></th>
            <th>Buyer</th>
            <th>Seller</th>
            <th>Event</th>
            <th>Tickets</th>
            <th><a href="<?php echo sortUrl('total', $sortField ?? '', $sortOrder ?? ''); ?>">Total Amount</a></th>
            <th><a href="<?php echo sortUrl('state', $sortField ?? '', $sortOrder ?? ''); ?>">State</a></th>
        </tr>
        <?php foreach ($data['orders'] as $order): ?>
            <tr>
                <td><?php echo isset($order['created_at']) ? date("Y-m-d H:i:s", strtotime($order['created_at'])) : 'N/A'; ?></td>
                <td><?php echo htmlspecialchars($order['id'] ?? 'N/A'); ?></td>
                <td>
                    <?php
                    if (isset($order['buyer'])) {
                        $buyer = $order['buyer'];
                        echo htmlspecialchars($buyer['name'] ?? 'N/A') . " (ID: " . htmlspecialchars($buyer['id'] ?? 'N/A') . ")<br>";
                        echo "Brokerage: " . htmlspecialchars($buyer['brokerage']['name'] ?? 'N/A');
                    } else {
                        echo 'N/A';
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($order['seller'])) {
                        $seller = $order['seller'];
                        echo htmlspecialchars($seller['name'] ?? 'N/A') . " (ID: " . htmlspecialchars($seller['id'] ?? 'N/A') . ")<br>";
                        echo "Brokerage: " . htmlspecialchars($seller['brokerage']['name'] ?? 'N/A');
                    } else {
                        echo 'N/A';
                    }
                    ?>
                </td>
                <td>
                    <?php
                    $item = isset($order['items'][0]) ? $order['items'][0] : null;
                    $event = $item && isset($item['ticket_group']['event']) ? $item['ticket_group']['event'] : null;
                    if ($event) {
                        echo htmlspecialchars($event['name'] ?? 'N/A') . "<br>";
                        echo date("Y-m-d H:i", strtotime($event['occurs_at'] ?? 'now'));
                    } else {
                        echo "N/A";
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if ($item) {
                        echo "Qty: " . htmlspecialchars($item['quantity'] ?? 'N/A') . "<br>";
                        echo "Price: $" . number_format($item['price'] ?? 0, 2);
                    } else {
                        echo "N/A";
                    }
                    ?>
                </td>
                <td>$<?php echo number_format($order['total'] ?? 0, 2); ?></td>
                <td><?php echo htmlspecialchars($order['state'] ?? 'N/A'); ?></td>
            </tr>
        <?php endforeach; ?>
    </table>
    
    <div class="pagination">
        <?php if ($page > 1): ?>
            <a href="?<?php echo http_build_query(array_merge($_GET, ['page' => $page - 1])); ?>">Previous Page</a> |
        <?php endif; ?>
        <span>Page <?php echo $page; ?> of <?php echo $totalPages; ?></span>
        <?php if ($page < $totalPages): ?>
            | <a href="?<?php echo http_build_query(array_merge($_GET, ['page' => $page + 1])); ?>">Next Page</a>
        <?php endif; ?>
    </div>
    </body>
    </html>
    • Access
    • API
    • API Keys
    • Security
    • Ticket Brokers
    • TicketEvolution
    • ticketWP
    • Viagogo
    • Vivid Seats
    [email protected]

    Post navigation

    Previous
    Next

    Leave a Reply Cancel reply

    Your email address will not be published. Required fields are marked *

    Back to the Secondary Ticket Market Blog

    Welcome to our Secondary Ticket Market blog, where we provide valuable insights and updates on the secondary ticket market.

    From the latest POS systems and tools to industry trends and expert tips, we cover everything you need to stay ahead in the world of ticketing. Dive into our articles to explore strategies and solutions that can help you grow and succeed in this fast-paced industry.

    Search

    Categories

    • Members Only (24)
      • Marketing (3)
      • Onsale Passwords (2)
      • Point-of-Sale (POS) Systems (7)
      • Search Engine Optimization (1)
      • Secondary Ticketing Market News (4)
      • Technology of the Secondary Ticket Market (10)
      • Ticket Affiliates (12)
      • Ticket Brokers (16)
      • Ticket Buying Bots (1)
      • Tools (13)
    • Ticket Exchanges (4)
    • ticketWP (13)
      • Competitors of ticketWP (7)
      • Marketing (1)
      • Product Information (3)
      • Product News (5)

    Recent posts

    • Signup with ticketWP
      Ticket Website Solutions for Brokers – Powered by ticketWP
    • Gift Cards Made Easy with ticketWP: Boost Sales Year-Round
    • coupons for cart abandonment
      Coupons for Cart Abandonment – ticketWP Exit Offers

    Tags

    Affiliate Marketing API ATBS atbs broker websites ATBSS atbs ticket affiliates atbs tickets for less Competitors create your own website atbs tfl custom websites for ticket brokers Email Marketing How to market in the Secondary Ticketing Market Learn Marketing marketing Marketing in the Secondary Ticketing Market Marketing to past customers Point of sale Point of Sale System POS Presale Codes Retention Marketing SMS Marketing TFL TFLGroup Ticket Affiliates ticket broker Ticket Brokers ticketCMS TicketEvolution Ticket Evolution TicketEvolution CORE TicketEvolution CORE POS TicketEvolution Ticket Affiliates TicketEvolution Ticket Brokers TicketNetwork ticketnetwork direct TicketPlatform Tickets For Less TicketWebsite.com ticketWP Viagogo Victory Live VividSeats Vivid Seats VividSeats SkyBox

    Related posts

    Signup with ticketWP
    Product News, ticketWP

    Ticket Website Solutions for Brokers – Powered by ticketWP

    August 4, 2025 [email protected] No comments yet

    Launching a ticket website shouldn’t be complicated or expensive. Whether you’re a ticket broker or an affiliate, you need a fast, flexible platform built to handle real traffic and convert visitors into buyers. That’s exactly what ticketWP delivers. Why Every Ticket Broker Needs a Strong Website First impressions matter. A slow or outdated site drives […]

    coupons for cart abandonment
    Marketing, Ticket Affiliates, Ticket Brokers, Tools

    Coupons for Cart Abandonment – ticketWP Exit Offers

    July 21, 2025 [email protected] No comments yet

    Over 70% of online shoppers abandon their carts before completing checkout. That’s a huge loss in potential revenue—especially for ticket brokers and affiliates. Using coupons for cart abandonment is one of the most effective ways to recover those lost sales. Why Customers Bail People leave carts for all kinds of reasons: price hesitation, distractions, or […]

    marketing to past customers
    Marketing, Ticket Affiliates, Ticket Brokers, Tools

    Why Most Ticket Brokers Fail at Marketing to Past Customers — And How to Do It Right

    July 14, 2025 [email protected] No comments yet

    Meta Description:Most ticket brokers ignore their most valuable audience—past customers. Learn why this strategy fails and how to turn it into real, repeat revenue. If you’re a ticket broker or affiliate, you’re likely focused on acquiring new customers. That’s important—but ignoring past buyers is one of the biggest mistakes in the industry. The truth? Every […]

    ticketWP is a fully customizable, open-source ticket website solution with complete control and seamless integration.

    ticketWP
    • ticketWP Features
    • ticketWP vs The Competition
    • Software Changelog
    • Affiliate Program
    • Secondary Ticket Market Blog
    • Sitemap
    Got questions or need help?
    • Support
    • Helpdesk
    • FAQs
    • Contact ticketWP
    Contact ticketWP

    Call us anytime
    ‪(910) 833-1119‬

    Email us anytime
    [email protected]

    © 2021-2025 ticketWP. All Rights Reserved.
    • Terms & Conditions
    • Privacy Policy