Thank you for the sample data. If I understand correctly, you want to join these two tables based on whether the value in Keyword appears in the reference groups in hf_ad_groups and then retrieve the corresponding columns from the second table (sv_trig in the example above).
This is a case of inexact matching so the regular join functions found in dplyr won't work. However, you can use the fuzzyjoin package instead as shown below.
library(tidyverse)
library(fuzzyjoin)
hf_keywords_new <- tibble(Keyword = c("hubspot templates free", "hubspot agency",
"hubspot marketing agency", "hubspot marketing"))
hf_ad_groups <- tibble(word1 = rep("hubspot", 3),
word2 = c("sales", "marketing", "demo"),
sv_trig = c(190, 510, 140))
hf_ad_groups <- unite(hf_ad_groups, word, c(word1, word2), sep = " ")
fuzzy_left_join(hf_keywords_new, hf_ad_groups, by = c(Keyword = "word"), match_fun = str_detect)
#> # A tibble: 4 x 3
#> Keyword word sv_trig
#> <chr> <chr> <dbl>
#> 1 hubspot templates free <NA> NA
#> 2 hubspot agency <NA> NA
#> 3 hubspot marketing agency hubspot marketing 510
#> 4 hubspot marketing hubspot marketing 510
Created on 2020-05-12 by the reprex package (v0.3.0)