public function track_event( $name, $properties = array(), $process_at = false, $once = false ) {
            $this->_logger->entrance( http_build_query( array( 'name' => $name, 'once' => $once ) ) );

            if ( ! $this->is_registered() ) {
                return false;
            }

            $event = array( 'type' => $name );

            if ( is_numeric( $process_at ) && $process_at > time() ) {
                $event['process_at'] = $process_at;
            }

            if ( $once ) {
                $event['once'] = true;
            }

            if ( ! empty( $properties ) ) {
                // Verify associative array values are primitive.
                foreach ( $properties as $k => $v ) {
                    if ( ! is_scalar( $v ) ) {
                        throw new Freemius_InvalidArgumentException( 'The $properties argument must be an associative key/value array with primitive values only.' );
                    }
                }

                $event['properties'] = $properties;
            }

            $result = $this->get_api_site_scope()->call( 'events.json', 'post', $event );

            return $this->is_api_error( $result ) ?
                false :
                $result;
        }